Flutter - 从其他视图获取数据 - 打印时获取 'Future<List<String>?>' 的实例而不是数据

Flutter - Getting data from an other view - when print getting Instance of 'Future<List<String>?>' instead of the data

提问人:Laurent Thomas 提问时间:9/29/2022 更新时间:9/29/2022 访问量:28

问:

我有两个视图相互作用。在第一个视图上,用户可以点击一个按钮,这将显示第二个视图,在那里他可以完成一个表单。完成后,我想将表单的数据传输到数组中。这是有效的。 但是,我想将数组数据发送到第一个屏幕,并在我的第一个视图中使用数组的数据。

这是我的做法。当我打印变量 dataFromFirstAction 时,我得到的是“Future<List?> 的实例。我想要的是获取数组,以便我可以访问每个字段并将它们用于我的第一个视图。非常感谢。

第一视图

void _openAddEntryDialog(String futureProjectName) async {

    final firstActionData = Navigator.of(context).push(MaterialPageRoute<List<String>>(
        builder: (BuildContext context) {
          return  AddingFirstActionToProjectV2(getprojectName:futureProjectName );
        },
        fullscreenDialog: true
    ),
    );

     setState(() {
       dataFromFirstAction = firstActionData;
       print('firstActionData');
       print (firstActionData.);
     });
  }

第二视图

 ElevatedButton(
                onPressed: (){

                  print('PRG:$getprojectName');

                  if(_addFirstTaskFormKey.currentState!.validate()){
                    
                    firstActionToRecord.insert(0,selectedFocusCapture!);
                    
                    Navigator.pop(context, firstActionToRecord);

                  } else{
                    _showSnackBarErrorMessage();
                    print("not validated");
                  }
                }, child: const Text('Press'),
              ),
arrays flutter 参数传递

评论


答:

2赞 Ivo 9/29/2022 #1

你需要等待结果,比如

final firstActionData = await Navigator.of(context).push(MaterialPageRoute<List<String>>(
    builder: (BuildContext context) {
      return  AddingFirstActionToProjectV2(getprojectName:futureProjectName );
    },
    fullscreenDialog: true
),
);

评论

0赞 Laurent Thomas 9/29/2022
非常感谢。我应该找到它。关于 Flutter,我还有很多东西要学 ;-)