在异步函数中将数据传递到第二页

问题描述 投票:0回答:1

我有一个两页的颤动应用程序我将一些数据从第一页推到第二页。

我在第一页中还有一个Future,它应该能够在第二页完成后更改第二页中的数据。

以下是我的应用程序的示例代码。

String _text = "From screen one";
ImagePicker.pickImage(source: ImageSource.camera).then((image) {
  _text = "got image";
});
Future.delayed(const Duration(milliseconds: 600), () {
  //StateContainer.of(context).updateStatus(Status.loading);
  Navigator.push(
    context,
    MaterialPageRoute(builder: (context) => SecondPage(text: _text)),
  );
});

/// My second page
class SecondPage extends StatelessWidget {
  String text;
  SecondPage({Key key, @required this.text}) : super(key: key);
  @override
  Widget build(BuildContext context) {
    return Scaffold(
        body: SingleChildScrollView(
          child: Container(
            padding: EdgeInsets.all(40.0),
            child: Text(
              this.text,
              style: TextStyle(
                fontSize: 20.0,
                color: Colors.grey,
              ),
            ),
          ),
        ));
  }
} 

我的问题是它没有在第二页显示got image。我怎么能表现出来?

dart flutter
1个回答
0
投票

正如pskink在以下代码为我工作的评论中所建议的那样。

final Future promise = ImagePicker.pickImage(source: ImageSource.camera);
 Navigator.push(
    context,
    MaterialPageRoute(builder: (context) => SecondPage(promise: promise,)),
  );

/// My second page
class SecondPage extends StatelessWidget {
  final Future promise;
  SecondPage({Key key, @required this.promise}) : super(key: key);
  @override
  Widget build(BuildContext context) {
    return Scaffold(
        body: SingleChildScrollView(
          child: Container(
            padding: EdgeInsets.all(40.0),
            child: FutureBuilder(
              future: this.promise,
              builder: (BuildContext context, AsyncSnapshot snapshot) {
                print(snapshot.data);
                return Text('Hello ');
              }
          ),
        ));
  }
}
© www.soinside.com 2019 - 2024. All rights reserved.