Flutter 颤振“Future”不是“Widget”类型的子类型

Flutter 颤振“Future”不是“Widget”类型的子类型,flutter,Flutter,我必须用MultiImagePicker选择图像,所以我有这个函数等待选择的资产,但当我点击一个按钮时会调用这个函数。 当我进入页面而不点击任何按钮时,我想选择foto,这可能吗 List<Asset> images = List<Asset>(); Future<void> loadAssets() async { List<Asset> resultList = List<Asset>(); String error = ''; t

我必须用MultiImagePicker选择图像,所以我有这个函数等待选择的资产,但当我点击一个按钮时会调用这个函数。 当我进入页面而不点击任何按钮时,我想选择foto,这可能吗

List<Asset> images = List<Asset>();
Future<void> loadAssets() async {
List<Asset> resultList = List<Asset>();
String error = '';
try {
  resultList = await MultiImagePicker.pickImages(
    maxImages: 300,
    enableCamera: false,
    selectedAssets: images,
  );
} on Exception catch (e) {
  error = e.toString();
}
if (!mounted) return;

setState(() {
  images = resultList;
});
}

@override
Widget build(BuildContext context) {
if(images.length == 0){
return MaterialApp(
        home: Scaffold(
          appBar: AppBar(
              centerTitle: true,
              title: Text('Picker Example'),
              backgroundColor: Colors.blueAccent
          ),
          body:Container(
            child: images.length > 0 ? Column(
              mainAxisAlignment: MainAxisAlignment.center,
              children: <Widget>[
                RaisedButton(
                  child: Text("Select photo"),
                  onPressed: () => loadAssets(),
                ),
                RaisedButton(
                  child: Text("Remove photo"),
                  onPressed: removeAssets,
                ),
                RaisedButton(
                  child: Text("upload photo"),
                  onPressed: upload,
                ),
                Expanded(
                  child: buildGridView(),
                )
              ],
            ) :loadAssets();
       )
);
这可能吗?

在initState函数中调用loadAssets。选择后,图像存储在图像列表中。那你想怎么做就怎么做

List<Asset> images = List<Asset>();
Future<void> loadAssets() async {
List<Asset> resultList = List<Asset>();
String error = '';
try {
  resultList = await MultiImagePicker.pickImages(
    maxImages: 300,
    enableCamera: false,
    selectedAssets: images,
  );
} on Exception catch (e) {
  error = e.toString();
}
if (!mounted) return;

setState(() {
  images = resultList;
});
}

@override
Widget build(BuildContext context) {
if(images.length == 0){
return MaterialApp(
        home: Scaffold(
          appBar: AppBar(
              centerTitle: true,
              title: Text('Picker Example'),
              backgroundColor: Colors.blueAccent
          ),
          body:Container(
            child: images.length > 0 ? Column(
              mainAxisAlignment: MainAxisAlignment.center,
              children: <Widget>[
                RaisedButton(
                  child: Text("Select photo"),
                  onPressed: () => loadAssets(),
                ),
                RaisedButton(
                  child: Text("Remove photo"),
                  onPressed: removeAssets,
                ),
                RaisedButton(
                  child: Text("upload photo"),
                  onPressed: upload,
                ),
                Expanded(
                  child: buildGridView(),
                )
              ],
            ) :loadAssets();
       )
);
例如:


在这里查看示例:已经看到了,我说我不想在任何按钮上没有clic,所以我不想在没有按下的情况下加载资产。所以,你想在页面上选择图像而不加载按钮?是的,完全正确,如果我选择一些图片,我不想看到两个按钮用于上载和删除之前选择的照片以及重新选择照片,我已经这样做了,现在我更新我的问题,这样你就可以理解betteryo Hari,你知道如何解决这个问题吗?