【问题标题】:Why is the value null of a variable on my next screen in Flutter?为什么在 Flutter 的下一个屏幕上变量的值为 null?
【发布时间】:2021-10-02 21:00:55
【问题描述】:

为什么我在 Flutter 中的下一个屏幕上的变量值为 null?

文本值 widget.place.texty 在我的小部件中完美运行。我正在解析 JSON 并获取信息。

但是,如果我尝试将此值传递到下一个屏幕,我会突然得到一个 NULL 或一个完整的空白区域。

这是我要创建的第二个页面:

class SecondRoute extends StatelessWidget {
  final Place? place;
  const SecondRoute({Key? key, this.place}) : super(key: key);

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text("Second Route"),
      ),
      body: Center(
        child: ElevatedButton(
          onPressed: () {
            Navigator.pop(context);
          },
          Text("${place?.texty ??""}"),
        ),
      ),
    );
  }

还有:

class PlaceDetail extends StatefulWidget {
  final Place? place;

  PlaceDetail({Key? key, this.place}) : super(key: key);

  @override
  _PlaceDetailState createState() {
    return _PlaceDetailState();
  }
}

我尝试按照此处的文档进行操作:https://flutter.dev/docs/cookbook/navigation/navigation-basics

导航本身可以工作,但尝试使用相同的变量在屏幕 2 上显示来自屏幕 1 的数据似乎不起作用。

这就是我构建按钮(在第一页上)以点击到第二页的方式。

                    Center(
                      child: ElevatedButton(
                        child: const Text('Open route'),
                        onPressed: () {
                          Navigator.push(
                            context,
                            MaterialPageRoute(builder: (context) => const SecondRoute()),
                          );
                        },
                      ),
                    ),

【问题讨论】:

    标签: json flutter dart


    【解决方案1】:

    您需要将位置值传递给第二条路线。

    Center(
       child: ElevatedButton(
          child: const Text('Open route'),
              onPressed: () {
                 Navigator.push(
                      context,
                      MaterialPageRoute(builder: (context) => const SecondRoute(place: widget.place)),
                  );
               },
             ),
           ),
    

    【讨论】:

    • 我建议您在第二个路由构造函数中将 place 参数更改为 required。将构造更改为: const SecondRoute({ Key key, required this.place });
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-08-24
    • 2019-04-08
    • 1970-01-01
    • 2014-01-09
    • 2021-09-08
    • 2013-04-12
    • 2019-01-10
    相关资源
    最近更新 更多