拍照现在有问题
来源:6-16 拍照APP开发-图片获取与图片展示【实战尝鲜】

糖炒果栗
2020-03-30
发现只能录像不能拍照
切返回值有问题
报错信息
W/Binder (30137): Caught a RuntimeException from the binder stub implementation.
W/Binder (30137): java.lang.RuntimeException: Methods marked with @UiThread must be executed on the main thread. Current thread: Binder:30137_1
W/Binder (30137): at io.flutter.embedding.engine.FlutterJNI.ensureRunningOnMainThread(FlutterJNI.java:807)
W/Binder (30137): at io.flutter.embedding.engine.FlutterJNI.invokePlatformMessageResponseCallback(FlutterJNI.java:740)
W/Binder (30137): at io.flutter.embedding.engine.dart.DartMessengerReply.reply(DartMessenger.java:156)W/Binder(30137):atio.flutter.plugin.common.MethodChannelReply.reply(DartMessenger.java:156)
W/Binder (30137): at io.flutter.plugin.common.MethodChannelReply.reply(DartMessenger.java:156)W/Binder(30137):atio.flutter.plugin.common.MethodChannelIncomingMethodCallHandler$1.success(MethodChannel.java:225)
W/Binder (30137): at io.flutter.plugins.imagepicker.ImagePickerDelegate.finishWithSuccess(ImagePickerDelegate.java:540)
W/Binder (30137): at io.flutter.plugins.imagepicker.ImagePickerDelegate.handleVideoResult(ImagePickerDelegate.java:517)
W/Binder (30137): at io.flutter.plugins.imagepicker.ImagePickerDelegate.access$100(ImagePickerDelegate.java:66)
W/Binder (30137): at io.flutter.plugins.imagepicker.ImagePickerDelegate$5.onPathReady(ImagePickerDelegate.java:489)
W/Binder (30137): at io.flutter.plugins.imagepicker.ImagePickerDelegate$31.onScanCompleted(ImagePickerDelegate.java:160)W/Binder(30137):atandroid.media.MediaScannerConnection1.onScanCompleted(ImagePickerDelegate.java:160)
W/Binder (30137): at android.media.MediaScannerConnection1.onScanCompleted(ImagePickerDelegate.java:160)W/Binder(30137):atandroid.media.MediaScannerConnectionClientProxy.onScanCompleted(MediaScannerConnection.java:204)
W/Binder (30137): at android.media.MediaScannerConnection1.scanCompleted(MediaScannerConnection.java:53)W/Binder(30137):atandroid.media.IMediaScannerListener1.scanCompleted(MediaScannerConnection.java:53)
W/Binder (30137): at android.media.IMediaScannerListener1.scanCompleted(MediaScannerConnection.java:53)W/Binder(30137):atandroid.media.IMediaScannerListenerStub.onTransact(IMediaScannerListener.java:61)
W/Binder (30137): at android.os.Binder.execTransact(Binder.java:726)
代码:
import ‘dart:io’;
import ‘package:flutter/material.dart’;
import ‘package:image_picker/image_picker.dart’;
//拍照app
class PhotoPage extends StatefulWidget {
@override
_PhotoPageState createState() => _PhotoPageState();
}
class _PhotoPageState extends State {
List _images = [];
Future getImage(bool isTakePhoto) async {
Navigator.pop(context);
var image = await ImagePicker.pickVideo(
source: isTakePhoto ? ImageSource.camera : ImageSource.gallery);
setState(() {
_images.add(image);
});
}
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text(‘拍照插件’),
),
body: Center(
child: Wrap(
spacing: 5,
runSpacing: 5,
children: _genImages(),
),
),
floatingActionButton: FloatingActionButton(
onPressed: _pickImage,
tooltip: ‘选择图片’,
child: Icon(Icons.add_a_photo),
),
);
}
_pickImage() {
showModalBottomSheet(
context: context,
builder: (context) => Container(
height: 160,
child: Column(
children: [
_item(‘拍照’, true),
_item(‘从相册选择’, false),
],
),
));
}
_item(String title, bool isTakePhoto) {
return GestureDetector(
child: ListTile(
leading: Icon(isTakePhoto ? Icons.camera_alt : Icons.photo_library),
title: Text(title),
onTap: () => getImage(isTakePhoto),
),
);
}
_genImages() {
return _images.map((file) {
return Stack(
children: [
ClipRRect(
//圆角效果
borderRadius: BorderRadius.circular(5),
child: Image.file(file, width: 120, height: 90, fit: BoxFit.fill),
),
Positioned(
right: 5,
top: 5,
child: GestureDetector(
onTap: () {
setState(() {
_images.remove(file);
});
},
child: ClipOval(
//圆角删除按钮
child: Container(
padding: EdgeInsets.all(3),
decoration: BoxDecoration(color: Colors.black54),
child: Icon(
Icons.close,
size: 18,
color: Colors.white,
),
),
),
))
],
);
}).toList();
}
}
1回答
-
糖炒果栗
提问者
2020-03-30
已解决 找到问题了
00
相似问题