Я работаю над проектом, в котором при нажатии значка закладки изображение должно переходить на страницу Saved.dart. Ниже кода содержится значок закладки. когда я нажимаю этот значок, он должен передать изображение на страницу сохраненного.dart, но не должно быть sh (не должна открываться страница Saved.dart при нажатии) на страницу Saved.dart.
import 'package:flutter/material.dart';
import 'dart:async';
import 'package:flutter/services.dart';
import 'package:image_downloader/image_downloader.dart';
import 'downloadingPage.dart';
class FullScreen extends StatefulWidget {
String imgUrl;
FullScreen({this.imgUrl});
@override
FullScreenState createState() => FullScreenState(imgUrl);
}
class FullScreenState extends State<FullScreen> {
Color colour = Colors.black;
Color colour2 = Colors.red;
Color colour3 = Colors.black;
bool isSaved = false;
String imgUrl;
FullScreenState(this.imgUrl);
String message = "";
String path = "";
int _progress = 0;
@override
void initState() {
super.initState();
events = new StreamController<int>.broadcast();
events.add(0);
ImageDownloader.callback(onProgressUpdate: (String imageId, int progress) {
setState(() {
print("progress $progress");
_progress = progress;
events.add(progress);
if (progress == 100) {
Navigator.pop(context);
}
});
});
}
@override
void dispose() {
events.close();
super.dispose();
}
Future<void> _downloadImage(String url,
{AndroidDestinationType destination, bool whenError = false}) async {
String fileName;
String path;
try {
String imageId;
if (whenError) {
imageId = await ImageDownloader.downloadImage(url).catchError((error) {
if (error is PlatformException) {
var path = "";
if (error.code == "404") {
print("Not Found Error.");
} else if (error.code == "unsupported_file") {
print("UnSupported FIle Error.");
path = error.details["unsupported_file_path"];
}
setState(() {
message = error.toString();
path = path;
});
}
print(error);
}).timeout(Duration(seconds: 10), onTimeout: () {
print("timeout");
});
} else {
if (destination == null) {
imageId = await ImageDownloader.downloadImage(url);
} else {
imageId = await ImageDownloader.downloadImage(
url,
destination: destination,
);
}
}
if (imageId == null) {
print("imageId is null");
return;
}
fileName = await ImageDownloader.findName(imageId);
path = await ImageDownloader.findPath(imageId);
} on PlatformException catch (error) {
setState(() {
message = error.message;
});
return;
}
if (!mounted) return;
setState(() {
message = 'Image Downloaded';
});
}
@override
Widget build(BuildContext context) {
return Scaffold(
body: Center(
child: Column(
mainAxisSize: MainAxisSize.min,
children: <Widget>[
RaisedButton(
onPressed: () {
events.add(0);
_downloadImage(imgUrl);
showDialog(
context: context,
builder: (_) => FunkyOverlay(
progress: _progress,
message: message,
),
);
},
child: Text("download"),
),
IconButton(
icon: Icon(
Icons.bookmark,
color: colour,
),
onPressed: () {
<-----when user press this icon the current image shold be passed to saved page----->
})
],
),
),
);
}
}
Сохранен следующий код. Dart
import 'package:flutter/material.dart';
class Saved extends StatefulWidget {
@override
_SavedState createState() => _SavedState();
}
class _SavedState extends State<Saved> {
@override
Widget build(BuildContext context) {
return Scaffold(
body:Container(
// here the images should be displayed
)
);
}
}