3.5 KiB
Rapor — Gezinme Okları, Ayarlar (Sıralama) ve Yazdırma
Tarih: 2026-08-06 Durum: Uygulandı
Amaç
Klavyede zaten çalışan sol/sağ ok tuşu gezinmesine görsel karşılık eklemek; ayarlar (gear) penceresiyle klasör sıralamasını kullanıcıya bırakmak; resmi yazıcıya göndermek.
Yapılan Değişiklikler
1. Gezinme okları (görsel arayüz)
- Sol/sağ alt köşeye sade yuvarlak ok butonları eklendi (
_NavButton,lib/screens/viewer_screen.dart). - Normalde görünmez; mouse görüntü alanına girince belirir
(
MouseRegion→_controlsVisible). - Hover'da kırmızı arka plan (kapatma butonuyla aynı stil).
- Tooltip yok (kullanıcı istemedi).
ImageManager.instance.previousImage()/nextImage()çağırır — klavye kısayoluyla aynı yolu kullanır.
2. PITFALL — MouseRegion flicker döngüsü (çözüldü)
İlk uygulamada MouseRegion yalnızca resim alanını sarıyordu, butonlar
Stack'te üstte ayrı duruyordu. Mouse butonun üzerine gelince hit-test
butona gidiyor → MouseRegion onExit → butonlar kayboluyor → mouse tekrar
resim alanına düşüyor → onEnter → sonsuz yanıp sönme ve tıklanamama.
Çözüm: MouseRegion'ı tüm Stack'in üzerine taşı (DropTarget'ın
çocuğu). Butonlar da Stack içinde kaldığı için onların üzerindeyken
bölgeden çıkılmaz; onExit yalnızca pencere alanı terk edilince tetiklenir.
3. Gear (Ayarlar) butonu
- İlk olarak görüntü alanının sol üstüne kondu; kullanıcı "title yüzünden
aşağıda çıkıyor" deyince title bar'ın soluna taşındı
(
CustomTitleBar(onSettings: ...),lib/widgets/custom_title_bar.dart). - Title bar
visibleparametresiyle_controlsVisible'a bağlandı: mouse resmin dışındayken title (gear dahil) saydam (AnimatedOpacity 0), mouse girince görünür. - Hover arka planı kırmızı (
_BarButtonvarsayılanı).
4. Ayarlar penceresi (_showSettings)
Gear'a tıklayınca açılan AlertDialog:
- Sıralama: Zamana göre / İsme göre (RadioListTile).
ImageManager.sortByName—setGalleryFromPathsiçinde sıralama karşılaştırıcısı buna göre değişir; isim sıralamasıtoLowerCasekarşılaştırma ile (büyük/küçük harf duyarsız). Mod değişince mevcut galerisetGalleryFromPaths([_images[_currentIndex]])ile yeniden kurulur (açık resim korunur). - Uygulamanın amacı (kısa paragraf).
- Kısayollar listesi (F11 satırı kaldırıldı — tam ekran özelliği yok).
5. Yazdırma (_printImage)
- Yeni bağımlılıklar:
printing: ^5.13.4,pdf: ^3.11.1(Linux dahil masaüstü destekli). - Buton ayarlar penceresinin actions kısmında ("Yazdır"); ayrı köşe butonu değil (kullanıcı istediği yerleşim).
- Akış:
File.readAsBytes→pw.MemoryImage→pw.DocumentA4 sayfa,BoxFit.contain→Printing.layoutPdf(sistem yazıcı dialogu).
6. _BarButton.hoverColor kaldırıldı
Gear title'a taşınıp tek hover rengi (kırmızı) kaldığı için opsiyonel parametre gereksizleşti; analyze uyarısı (unused_element_parameter) temizlendi.
Doğrulama
flutter analyze: 21 info (pre-existing baseline; yeni hata yok).flutter build linux --release: ✓ Built../install.sh(debug bundle silinip release kuruldu): exit 0.bash dist/rebuild-deb.sh:dist/imajviewer_1.0.1_amd64.deb(11M) üretildi.- Görsel davranış kullanıcı tarafından manuel test edildi (oklar, gear/title saydamlığı, hover renkleri, sıralama, print dialogu).