gpt4 book ai didi

text - 如何在 ModalRoute 上设置状态()?

转载 作者:IT王子 更新时间:2023-10-29 07:02:21 34 4
gpt4 key购买 nike

我用 flutter 编写了一个应用程序。我想更改字符串变量的状态。在我设置字符串变量的状态后,ModalRoute PopUpMenu 不显示更改的变量。如果我关闭 ModalRoute PopUpMenu 并再次打开它,我可以看到更改后的变量。

我试图弹出上下文,但我想在 PopUpMenu 上进行更改。我有自己的 Overlay 小部件。


class MyOverlay extends ModalRoute {
...
}

// this is my main.dart:

List<String> categories = ['please', 'help', 'me'];
String _selectedCategory = 'category';

// this is where the PopUpMenu starts
floatingActionButton: FloatingActionButton(
child: ...,
onPressed: () {
_showPopup(context, _popupBody(), 'Add');
},
),

_showPopup(BuildContext context, Widget widget, String title, {BuildContext popupContext}) {
Navigator.push(
context,
MyOverlay(
...
onPressed: () {
try {
Navigator.pop(context); //close the popup
} catch (e) {
print(e);
}
},
...
body: widget,
) ...
);
}

Widget _popupBody() {
...
PopupMenuButton<String>(
// HERE IS THE PROBLEM THIS SHOULD CHANGE WHEN I SELECT
child: Text('$_selectedCategory'),
itemBuilder: (BuildContext context) {
return categories.map((String choice) {
return PopupMenuItem<String>(
value: choice,
child: Text(choice),
);
}).toList();
},
onSelected: _selectCategory,
),

...
}

void _selectCategory(String category) {
setState(() => this._selectedCategory = category);
}

如果我选择 PopupMenuItem,文本小部件不会更改。

最佳答案

我有同样的问题,我暂时使用 changedExternalState () 修复;强制重建,但我认为这可能不是最佳选择。

例子:

CheckboxListTile(
value: _checkboxValue,
title: Text(phone),
onChanged: (value){
_checkboxValue = value;
//Fix
changedExternalState();
},
)

关于text - 如何在 ModalRoute 上设置状态()?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57038462/

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