【发布时间】:2020-12-14 03:38:12
【问题描述】:
我是一个入门级的 Flutter 开发者,我在这个问题上被困了一段时间,我尝试了不同的方法
我正在尝试制作“注释标题”(那个特定的小部件),弹出
那么这应该显示 desired result
“我的笔记”选项卡下的两个不同内容是两个有状态的小部件,而“我的笔记”选项卡本身就是另一个有状态的小部件
我尝试过使用一个函数,但它不起作用
enum MyNoteContent {
staticNote,
dynamicNote,
}
MyNoteContent selectedContent = MyNoteContent.staticNote;
Widget updateMyNotes() {
if (selectedContent == MyNoteContent.staticNote) {
return MyNoteStatic();
} else {
return MyNoteDynamic();
}
}
然后我调用 MyNotes Widget 中的函数
class _MyNotesTabState extends State<MyNotesTab> {
@override
Widget build(BuildContext context) {
return updateMyNotes();
}
}
我试图更新显示的第一个内容中的值(在它自己的小部件中),以便当它被按下时,它应该改变
class _MyNoteStaticState extends State<MyNoteStatic> {
@override
Widget build(BuildContext context) {
return Container(
child: RawMaterialButton(
onPressed: () {
setState(() {
selectedContent = MyNoteContent.dynamicNote;
updateMyNotes();
});
},
但它不起作用
【问题讨论】:
-
请创建一个minimal reproducible example。有点不清楚您现在实际拥有的代码是什么。制作一些我们可以粘贴到 Dartpad 中并显示问题的东西。
-
我刚刚添加了它。这是 GitHubGist 的链接。
-
将完整示例直接粘贴到您的问题中,并尝试删除尽可能多的无关代码。
-
setState 不会影响其他小部件!
-
@Yadu 这不是很准确。在子进程中调用
setState不能直接影响父进程,但反转它会产生影响。