dart Flutter中的视频库选择器上的应用程序崩溃

lsmepo6l  于 2023-09-28  发布在  Flutter
关注(0)|答案(3)|浏览(173)

我的flutter版本是3.13.2,我使用的是image_picker 1.0.4。
当从iOS图库中选择视频时,它第一次选择视频时没有任何崩溃,但第二次总是崩溃。它不会在Android设备上崩溃,在拾取图像时也不会崩溃。我第二次从图库中选择视频时总是崩溃。
以下是我从Firebase crashlytics收到的崩溃日志:
在从主线程访问布局引擎后,不得从后台线程执行对布局引擎的修改

  1. TextButton(
  2. onPressed: () async {
  3. final ImagePicker picker = ImagePicker();
  4. final XFile? galleryVideo =
  5. await picker.pickVideo(source: ImageSource.gallery);
  6. },
  7. child: Text("Pick video from gallery"),
  8. ),

我已经尝试将Flutter版本更新到最新版本,并将库版本更新到最新版本。

e7arh2l6

e7arh2l61#

我在iOS模拟器中尝试并测试了下面提到的代码。一切正常。你应该尝试和测试,并提供一个承认我。你可以在评论区问任何问题。
Info.plist文件中添加以下代码:

  1. <key>NSPhotoLibraryUsageDescription</key>
  2. <string>This app requires access to the photo library.</string>
  3. <key>NSCameraUsageDescription</key>
  4. <string>This app requires access to the camera.</string>
  5. <key>NSMicrophoneUsageDescription</key>
  6. <string>This app does not require access to the microphone.</string>

将这些代码复制并粘贴到main.dart文件中:

  1. import "package:flutter/material.dart";
  2. import "package:image_picker/image_picker.dart";
  3. void main() {
  4. WidgetsFlutterBinding.ensureInitialized();
  5. runApp(const MyApp());
  6. }
  7. class MyApp extends StatelessWidget {
  8. const MyApp({super.key});
  9. @override
  10. Widget build(BuildContext context) {
  11. return MaterialApp(
  12. title: "Flutter Demo",
  13. theme: ThemeData(
  14. colorScheme: ColorScheme.fromSeed(seedColor: Colors.deepPurple),
  15. useMaterial3: true,
  16. ),
  17. home: const MyHomePage(),
  18. debugShowCheckedModeBanner: false,
  19. );
  20. }
  21. }
  22. class MyHomePage extends StatefulWidget {
  23. const MyHomePage({super.key});
  24. @override
  25. State<MyHomePage> createState() => _MyHomePageState();
  26. }
  27. class _MyHomePageState extends State<MyHomePage> {
  28. final ImagePicker picker = ImagePicker();
  29. @override
  30. Widget build(BuildContext context) {
  31. return Scaffold(
  32. body: SafeArea(
  33. child: ElevatedButton(
  34. onPressed: openVideoPicker,
  35. child: const Text("Pick Video From Gallery"),
  36. ),
  37. ),
  38. );
  39. }
  40. Future<void> openVideoPicker() async {
  41. XFile xFile = XFile("");
  42. xFile = await picker.pickVideo(source: ImageSource.gallery) ?? XFile("");
  43. xFile.path.isEmpty ? print("Picker Close") : print("Picked: ${xFile.path}");
  44. return Future<void>.value();
  45. }
  46. }
展开查看全部
koaltpgm

koaltpgm2#

我在Flutter 3.13.2中遇到了同样的问题。关闭叶轮后工作。
关闭叶轮:在应用程序的Info.plist文件中的顶级标记下添加以下标记。
FLTEnableImpeller

rpppsulh

rpppsulh3#

将flutter更新到3.13.3并将image_picker更新到1.0.4修复了该问题。

相关问题