【问题标题】:Provider ImagePicker提供者图像选择器
【发布时间】:2020-07-01 09:48:05
【问题描述】:

我在从图库中选择图片时遇到了提供商问题,它没有出现在 UI 中。

我尝试改用 Text,它确实工作得很好。我认为问题出在futureBuilder之类的东西上

class ImageController extends ChangeNotifier {
   Future<File> _image;

   pickImageFromGallery(ImageSource source) {
       _image = ImagePicker.pickImage(source: source);
       NotificationListener();
   }

  Widget imageFromGallery() {

    return  FutureBuilder<File>(
     future: _image,
     builder: (BuildContext context, AsyncSnapshot<File> snapshot) {
       if (snapshot.connectionState == ConnectionState.done &&
           null != snapshot.data) {
         Utility.saveImageToPreferences(
             Utility.base64String(snapshot.data.readAsBytesSync()));
         return
          Image.file(
           snapshot.data,

         );
       } else if (null != snapshot.error) {
         return const Text(
           'Error Picking Image',
           textAlign: TextAlign.center,
         );
       } else {
         return const Text(
           'No Image Selected',
           textAlign: TextAlign.center,
         );
       }
      },
     );
  }
}

这就是我从另一个widgit显示它的方式

Consumer<ImageController>(
                    builder: (context, image,child){
                    return  Provider.of<ImageController>(context).imageFromGallery();
                    },
                  ),

【问题讨论】:

    标签: flutter provider imagepicker


    【解决方案1】:

    消费者已经检索到ImageControllerConsumer 是一种更好的编写 Provider.of 的方式,使用构建器返回一个小部件。

    Consumer<ImageController>(
      builder: (context, imageController, child){
        return  imageController.imageFromGallery();
      },
    ),
    

    【讨论】:

    • 在我导航到另一个页面并导航回来之前它不会出现
    • @MaenAlnassan 我不知道您所说的导航是什么意思,也许向我们展示整个班级并构建树。还可以尝试向您的构建器添加日志,以检查您的连接状态是否正在更改。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-01-15
    • 1970-01-01
    • 2014-08-04
    • 2021-05-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多