将参数传递给有状态小部件

时间:2021-02-22 16:15:42

标签: flutter dart

我试图将一个参数 uid 传递给一个像这样的有状态小部件:

class BoardBody extends StatefulWidget {
  String uid;
  BoardBody({
    @required this.uid,
  });

当我尝试在 initstate 访问它时,我得到了一个空值。但是,如果我热重新加载页面,则会打印出 widget.uid 值。我做错了什么吗?我希望 uid 可用,以便我可以从数据库中提取一些数据。

  @override
  void initState() {
    // TODO: implement initState
    print("user id");
    print(widget.uid);
    super.initState();
  }

我已经像这样将 uid 数据传递给小部件:

BoardBody(uid: uid)

2 个答案:

答案 0 :(得分:0)

我认为这是由于您在 main.dart 中使用了路由。 因此,initState() 在构建 Scaffold 后加载。

如果您尝试使用 MaterialPageRoute(builder: (context) => BoardBody()) 构建屏幕/小部件,您将看到结果(打印的 uid)。

答案 1 :(得分:0)

试试这个。

@override
  void initState() {
    super.initState();
    // TODO: implement initState
    print("user id");
    print(widget.uid);
  }

所以 super.initState() 应该在你的打印之上。这应该有效。