如何解决图像选择器库不适用于 Flutter 应用程序
我正在尝试为我的 Flutter 应用程序添加一个图像选择器包,但它不起作用,它还显示构建 gradle 无法构建。 我读过它与本机应用程序操作系统有关,它必须具有最新版本和最新版本的成绩库才能工作, 我已经使用最短的解决方案解决了这个问题,我已经将图像选择器版本降级到 ^0.5.4+1 模拟器启动但无法从相机中拾取图像,未显示预览图像。
image picker: ^0.5.4+1
dependencies {
classpath 'com.android.tools.build:gradle:3.6.0'
classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
}
distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists
distributionUrl=https\://services.gradle.org/distributions/gradle-6.0.1-all.zip
W/Binder ( 7322): Caught a RuntimeException from the binder stub implementation.
W/Binder ( 7322): java.lang.RuntimeException: Methods marked with @UiThread must be executed on the main thread. Current thread: Binder:7322_2
W/Binder ( 7322): at io.flutter.embedding.engine.FlutterJNI.ensureRunningOnMainThread(FlutterJNI.java:781)
W/Binder ( 7322): at io.flutter.embedding.engine.FlutterJNI.invokePlatformMessageResponseCallback(FlutterJNI.java:718)
W/Binder ( 7322): at io.flutter.embedding.engine.dart.DartMessenger$Reply.reply(DartMessenger.java:144)
W/Binder ( 7322): at io.flutter.plugin.common.MethodChannel$IncomingMethodCallHandler$1.success(MethodChannel.java:231)
W/Binder ( 7322): at io.flutter.plugins.imagepicker.ImagePickerDelegate.finishWithSuccess(ImagePickerDelegate.java:540)
W/Binder ( 7322): at io.flutter.plugins.imagepicker.ImagePickerDelegate.handleImageResult(ImagePickerDelegate.java:505)
W/Binder ( 7322): at io.flutter.plugins.imagepicker.ImagePickerDelegate.access$000(ImagePickerDelegate.java:66)
W/Binder ( 7322): at io.flutter.plugins.imagepicker.ImagePickerDelegate$4.onPathReady(ImagePickerDelegate.java:470)
W/Binder ( 7322): at io.flutter.plugins.imagepicker.ImagePickerDelegate$3$1.onScanCompleted(ImagePickerDelegate.java:160)
W/Binder ( 7322): at android.media.MediaScannerConnection$ClientProxy.onScanCompleted(MediaScannerConnection.java:204)
W/Binder ( 7322): at android.media.MediaScannerConnection$1.scanCompleted(MediaScannerConnection.java:53)
W/Binder ( 7322): at android.media.IMediaScannerListener$Stub.onTransact(IMediaScannerListener.java:61)
W/Binder ( 7322): at android.os.Binder.execTransact(Binder.java:731)
我写的代码是:
import 'dart:io';
import 'package:flutter/material.dart';
// import 'package:image_picker/image_picker.dart';
import 'package:image_picker/image_picker.dart';
import 'package:path/path.dart' as path;
// import 'package:path_provider/path_provider.dart' as syspaths;
class ImageInput extends StatefulWidget {
@override
_ImageInputState createState() => _ImageInputState();
}
class _ImageInputState extends State<ImageInput> {
File _storedImage;
Future<void> _takePicture() async {
final imageFile = await ImagePicker.pickImage(
source: ImageSource.camera,maxWidth: 600,);
setState(() {
_storedImage = imageFile;
});
// final appDir = await syspaths.getApplicationDocumentsDirectory();
// final fileName = path.basename(imageFile.path);
// final savedImage = await imageFile.copy('${appDir.path}/$fileName');
print("_storedImage${_storedImage.path}");
}
@override
Widget build(BuildContext context) {
return Row(
children: <Widget>[
Expanded(
child: Container(
width: 150,height: 100,decoration: BoxDecoration(
border: Border.all(width: 1,color: Colors.grey),),child: _storedImage != null
? Image.file(
_storedImage,fit: BoxFit.cover,width: double.infinity,)
: Text(
'No Image Taken',textAlign: TextAlign.center,alignment: Alignment.center,// SizedBox(
// width: 10,// ),Expanded(
child: FlatButton.icon(
icon: Icon(Icons.camera),label: Text('Upload'),textColor: Theme.of(context).primaryColor,onPressed: _takePicture,],);
}
}
我尝试将图像选择器包更新到 ^0.6.0+10 出现了另一个错误:
C:\Users\ASUS\Desktop\flutter\.pub-cache\hosted\pub.dartlang.org\flutter_plugin_android_lifecycle-1.0.11\android\src\main\java\io\flutter\embedding\engine\plugins\lifecycle\FlutterLifecycleAdapter.java:8: error: package androidx.lifecycle does not exist
import androidx.lifecycle.Lifecycle;
^
C:\Users\ASUS\Desktop\flutter\.pub-cache\hosted\pub.dartlang.org\flutter_plugin_android_lifecycle-1.0.11\android\src\main\java\io\flutter\embedding\engine\plugins\lifecycle\FlutterLifecycleAdapter.java:22: error: cannot find symbol
public static Lifecycle getActivityLifecycle(
^
symbol: class Lifecycle
location: class FlutterLifecycleAdapter
2 errors
FAILURE: Build failed with an exception.
* What went wrong:
Execution failed for task ':compileReleaseJavaWithJavac'.
> Compilation failed; see the compiler error output for details.
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。