gpt4 book ai didi

android - Scaffold 主体中的有状态小部件

转载 作者:IT王子 更新时间:2023-10-29 07:13:22 25 4
gpt4 key购买 nike

我不明白为什么在 flutter 中不可能有这样的结构:

//...
Scaffold(
//...
body: myPage(dataList[index])
)
//...

其中 myPage 是一个扩展 statefulWidget 并返回一个 ListView 的类。它需要一个存储在数组中的数据参数。我想在更改索引时更改脚手架的主体,例如使用抽屉导航。

我注意到:

  • 如果 myPage 扩展 statelessWidget 一切正常,
  • 如果我有扩展 statefulWidget 的不同页面类,一切正常,
  • 但如果我的 myPage 需要数据来更改内容,则什么也没有发生,它不会改变,它会停留在第一页

是的,每当我更改索引时,我都会使用 setState 方法来刷新布局。

这是一个错误还是我遗漏了什么?如果这不是错误,我可以做些什么作为解决方法?提前致谢

更新:

我发布了另一个页面的代码,该页面更简单,没有什么奇怪的地方无论如何都有这个问题(我知道在这个页面中我可以使用 statelessWidget 但无论如何它应该可以工作):

class FirstFragment extends StatefulWidget {
String data;
FirstFragment(this.data);

@override
_FirstFragment createState() => new _FirstFragment(data);

}

class _FirstFragment extends State<FirstFragment>{
String data;
_FirstFragment(this.data);

@override
Widget build(BuildContext context) {
// TODO: implement build
return new Center(
child: new Text(data),
);
}
}

最佳答案

您不应该将参数从父小部件类传递到它的状态 - 您可以通过“小部件”指令访问它们。另外,听听 Lint - 所有实例在主类中都应该是最终的。

class FirstFragment extends StatefulWidget {
final String data;
FirstFragment(this.data);

@override
_FirstFragment createState() => new _FirstFragment();

}

class _FirstFragment extends State<FirstFragment>{


@override
Widget build(BuildContext context) {
// TODO: implement build
return new Center(
child: new Text(widget.data),
);
}
}

关于android - Scaffold 主体中的有状态小部件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52632142/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com