我是 Flutter 编程的新手,并且已经开发了一个用于从图库中挑选图像的小部件,但我无法成功地将它与照片过滤器插件集成并创建一种将其发布到我的应用程序中的方法。请帮忙。代码有点乱。
import 'dart:io';
import 'package:flutter/material.dart';
import 'package:image_picker/image_picker.dart';
import 'package:breevie_ui/model/media_source.dart';
import 'package:ionicons/ionicons.dart';
import 'list_tile_widget.dart';
import 'dart:async';
import 'package:flutter/material.dart';
import 'package:path/path.dart';
import 'package:photofilters/photofilters.dart';
import 'package:image/image.dart' as imageLib;
import 'package:image_picker/image_picker.dart';
class GalleryButtonWidget extends StatefulWidget {
@override
_GalleryButtonWidgetState createState() => _GalleryButtonWidgetState();
}
class _GalleryButtonWidgetState extends State<GalleryButtonWidget> {
String fileName;
List<Filter> filters = presetFiltersList;
File imageFile;
编码:
Future getImage(context) async {
imageFile = await ImagePicker.pickImage(source: ImageSource.gallery);
fileName = basename(imageFile.path);
var image = imageLib.decodeImage(imageFile.readAsBytesSync());
image = imageLib.copyResize(image, width: 600);
Map imagefile = await Navigator.push(
context,
new MaterialPageRoute(
builder: (context) => new PhotoFilterSelector(
title: Text("Photo Filter Example"),
image: image,
filters: presetFiltersList,
filename: fileName,
loader: Center(child: CircularProgressIndicator()),
fit: BoxFit.contain,
),
),
);
if (imagefile != null && imagefile.containsKey('image_filtered')) {
setState(() {
imageFile = imagefile['image_filtered'];
});
print(imageFile.path);
}
}
@override
Widget build(BuildContext context) => ListTileWidget(
text: 'From Gallery',
icon: Ionicons.image_outline,
onClicked: () => pickGalleryMedia(context),
);
Future pickGalleryMedia(BuildContext context) async {
final MediaSource source = ModalRoute.of(context).settings.arguments;
final getMedia = source == MediaSource.image
? ImagePicker().getImage
: ImagePicker().getVideo;
final media = await getMedia(source: ImageSource.gallery);
final file = File(media.path);
以前的方法确实有效。
Navigator.of(context).pop(file);
我正在尝试但没有奏效的新方法。
Navigator.pop(
context,
MaterialPageRoute(
builder: (context) => PhotoFilterSelector(
title: Text('Halo dudes'),
filters: filters,
image: null,
loader: Center(
child: CircularProgressIndicator(),
),
filename: fileName)));
}
}