首页 > 解决方案 > 错误:尝试构建导航时 Dart 中未定义的名称“小部件”

问题描述

有人能帮我吗?这里有 Flutter 的新手。

我有这个:

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);
          },
          child: Text(widget.place!.text!),
        ),
      ),
    );
  }

和:

class PlaceDetail extends StatefulWidget {
  final Place? place;

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

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

我可以成功导航到下一页,但问题出在这部分:

child: Text(widget.place!.text!)

我试图展示一些我用 JSON 获取的内容。在不同的小部件中,那个特定的 widget.place!.text! 就像一个魅力,但在这个类和小部件中,我无法让它工作,因此我得到了错误:

error: Undefined name 'widget'

如果我将它扩展到 State ,我会收到错误消息:

error: The return type 'SecondRoute' isn't a 'Widget'

我试图按照这里的文档: https ://flutter.dev/docs/cookbook/navigation/navigation-basics

正如我所提到的,导航本身可以工作,但是尝试从我在小部件中的 JSON 中获取数据会给我带来错误。

编辑:

Text(${place?.text!}") 

以上给了我NULL。有没有机会在不给我 NULL 值的情况下将此变量发送到新页面/屏幕?

标签: jsonflutterdart

解决方案


child: Text(widget.place!.text!)

应该

child: Text(this.place!.text!)

或者干脆

child: Text(place!.text!)

尽管您应该考虑使用!. 这里不应该是必要的。


推荐阅读