fix: info cubugu kaldirildi, kod temizlendi
Some checks failed
Build Windows / build-windows (push) Has been cancelled
Some checks failed
Build Windows / build-windows (push) Has been cancelled
This commit is contained in:
@@ -1,7 +1,6 @@
|
||||
import 'dart:io';
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:flutter/gestures.dart';
|
||||
import '../services/image_manager.dart';
|
||||
|
||||
class ImageCanvas extends StatefulWidget {
|
||||
final String filePath;
|
||||
@@ -35,7 +34,7 @@ class _ImageCanvasState extends State<ImageCanvas> {
|
||||
void _resetView() {
|
||||
_controller.value = Matrix4.identity();
|
||||
_currentScale = 1.0;
|
||||
_isFilled = true; // yeni resimde fill moduna dön
|
||||
_isFilled = true;
|
||||
}
|
||||
|
||||
void _onTransformChanged() {
|
||||
@@ -88,16 +87,6 @@ class _ImageCanvasState extends State<ImageCanvas> {
|
||||
_controller.value = newMatrix;
|
||||
}
|
||||
|
||||
String _zoomPercent() {
|
||||
return '${(_currentScale * 100).round()}%';
|
||||
}
|
||||
|
||||
String _imageInfo() {
|
||||
final mgr = ImageManager.instance;
|
||||
if (mgr.images.isEmpty) return '';
|
||||
return '${mgr.currentIndex + 1} / ${mgr.imageCount}';
|
||||
}
|
||||
|
||||
@override
|
||||
void dispose() {
|
||||
_controller.removeListener(_onTransformChanged);
|
||||
@@ -117,86 +106,54 @@ class _ImageCanvasState extends State<ImageCanvas> {
|
||||
},
|
||||
child: GestureDetector(
|
||||
onDoubleTap: _handleDoubleTap,
|
||||
child: Stack(
|
||||
children: [
|
||||
InteractiveViewer(
|
||||
transformationController: _controller,
|
||||
boundaryMargin: const EdgeInsets.all(double.infinity),
|
||||
minScale: 0.1,
|
||||
maxScale: 10.0,
|
||||
panEnabled: true,
|
||||
scaleEnabled: false,
|
||||
child: _isFilled
|
||||
? SizedBox.expand(
|
||||
child: Image.file(
|
||||
File(widget.filePath),
|
||||
fit: BoxFit.cover,
|
||||
filterQuality: FilterQuality.high,
|
||||
errorBuilder: (context, error, stackTrace) {
|
||||
return const Center(
|
||||
child: Column(
|
||||
mainAxisSize: MainAxisSize.min,
|
||||
children: [
|
||||
Icon(Icons.broken_image, size: 48, color: Colors.white38),
|
||||
SizedBox(height: 8),
|
||||
Text('Resim yüklenemedi',
|
||||
style: TextStyle(color: Colors.white38)),
|
||||
],
|
||||
),
|
||||
);
|
||||
},
|
||||
),
|
||||
)
|
||||
: Center(
|
||||
child: Image.file(
|
||||
File(widget.filePath),
|
||||
fit: BoxFit.contain,
|
||||
filterQuality: FilterQuality.high,
|
||||
errorBuilder: (context, error, stackTrace) {
|
||||
return const Center(
|
||||
child: Column(
|
||||
mainAxisSize: MainAxisSize.min,
|
||||
children: [
|
||||
Icon(Icons.broken_image, size: 48, color: Colors.white38),
|
||||
SizedBox(height: 8),
|
||||
Text('Resim yüklenemedi',
|
||||
style: TextStyle(color: Colors.white38)),
|
||||
],
|
||||
),
|
||||
);
|
||||
},
|
||||
),
|
||||
),
|
||||
),
|
||||
// Alt bilgi çubuğu
|
||||
Positioned(
|
||||
bottom: 4,
|
||||
left: 0,
|
||||
right: 0,
|
||||
child: Center(
|
||||
child: ListenableBuilder(
|
||||
listenable: _controller,
|
||||
builder: (context, _) {
|
||||
return Container(
|
||||
padding: const EdgeInsets.symmetric(horizontal: 10, vertical: 3),
|
||||
decoration: BoxDecoration(
|
||||
color: Colors.black54,
|
||||
borderRadius: BorderRadius.circular(6),
|
||||
),
|
||||
child: Text(
|
||||
'${_imageInfo()} | ${_zoomPercent()}',
|
||||
style: const TextStyle(
|
||||
color: Colors.white70,
|
||||
fontSize: 12,
|
||||
fontFamily: 'monospace',
|
||||
child: InteractiveViewer(
|
||||
transformationController: _controller,
|
||||
boundaryMargin: const EdgeInsets.all(double.infinity),
|
||||
minScale: 0.1,
|
||||
maxScale: 10.0,
|
||||
panEnabled: true,
|
||||
scaleEnabled: false,
|
||||
child: _isFilled
|
||||
? SizedBox.expand(
|
||||
child: Image.file(
|
||||
File(widget.filePath),
|
||||
fit: BoxFit.cover,
|
||||
filterQuality: FilterQuality.high,
|
||||
errorBuilder: (context, error, stackTrace) {
|
||||
return const Center(
|
||||
child: Column(
|
||||
mainAxisSize: MainAxisSize.min,
|
||||
children: [
|
||||
Icon(Icons.broken_image, size: 48, color: Colors.white38),
|
||||
SizedBox(height: 8),
|
||||
Text('Resim yüklenemedi',
|
||||
style: TextStyle(color: Colors.white38)),
|
||||
],
|
||||
),
|
||||
),
|
||||
);
|
||||
},
|
||||
);
|
||||
},
|
||||
),
|
||||
)
|
||||
: Center(
|
||||
child: Image.file(
|
||||
File(widget.filePath),
|
||||
fit: BoxFit.contain,
|
||||
filterQuality: FilterQuality.high,
|
||||
errorBuilder: (context, error, stackTrace) {
|
||||
return const Center(
|
||||
child: Column(
|
||||
mainAxisSize: MainAxisSize.min,
|
||||
children: [
|
||||
Icon(Icons.broken_image, size: 48, color: Colors.white38),
|
||||
SizedBox(height: 8),
|
||||
Text('Resim yüklenemedi',
|
||||
style: TextStyle(color: Colors.white38)),
|
||||
],
|
||||
),
|
||||
);
|
||||
},
|
||||
),
|
||||
),
|
||||
),
|
||||
),
|
||||
],
|
||||
),
|
||||
),
|
||||
);
|
||||
|
||||
Reference in New Issue
Block a user