【问题标题】:Flutter Image Picker doesn't pick image from Album/GalleryFlutter Image Picker 不会从相册/图库中选择图像
【发布时间】:2021-05-04 04:25:04
【问题描述】:

我正在尝试在我的应用中实现 imagepicker 库。我的应用程序运行没有任何错误,但我无法从相册/图库中挑选/选择图像。选择图像时,应用程序应在正文中显示图像,但没有任何反应。我必须点击取消才能返回主屏幕。我还应该提到,控制台返回null 用于打印语句print('image: $image');

请帮忙。

import 'dart:io';
import 'package:flutter/cupertino.dart';
import 'package:image_picker/image_picker.dart';
import 'package:flutter/material.dart';

void main() {
  runApp(MyApp());
}

class MyApp extends StatelessWidget {
  // This widget is the root of your application.
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'Flutter Demo',
      theme: ThemeData(
        brightness: Brightness.dark,
      ),
      home: MyHomePage(),
    );
  }
}

class MyHomePage extends StatefulWidget {
  @override
  _MyHomePageState createState() => _MyHomePageState();
}

class _MyHomePageState extends State<MyHomePage> {
File image;
final picker = ImagePicker();

  Future getImage() async {
    final pickedFile = await picker.getImage(source: ImageSource.gallery);
    setState(() {
      if (pickedFile != null) {
        image = File(pickedFile.path);
      } else {
        print('image: $image');
      }
    });
  }

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text('Image Picker'),
      ),
      body: Center(
        child: image == null
            ? Text('No image selected.')
            : Image.file(image),
      ),
      floatingActionButton: FloatingActionButton(
        onPressed: getImage,
        tooltip: 'Pick Image',
        child: Icon(Icons.add_a_photo),
      ),
    );
  }
}

【问题讨论】:

    标签: android flutter flutter-image


    【解决方案1】:

    试试下面的代码

       Future getImage() async {
            File pickedFile = await picker.getImage(source: ImageSource.gallery);
                if (pickedFile != null) {
                    setState(() {
                        image = File(pickedFile.path);
                    });
                 } else {
                     print('image: $image');
                 }
        }
    

    【讨论】:

    • 我试过你的代码,但问题仍然存在。
    • 我按照您的建议将类型更改为文件,显示错误“PickedFile”类型的值无法分配给“文件”类型的变量。我按照编辑器的建议更改为 PickedFile 类型,从而消除了错误,因此新代码为 PickedFile pickedFile = await picker.getImage(source: ImageSource.gallery);。但主要问题仍然存在。
    • 对于在 M1 MacBook 上运行的用户来说,这是一个已知问题。我将尝试在物理设备上运行。谢谢。 github.com/flutter/flutter/issues/71943
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-07-25
    • 1970-01-01
    • 2020-06-26
    • 1970-01-01
    • 2019-09-16
    • 1970-01-01
    • 2019-07-16
    相关资源
    最近更新 更多