flutter - 警报对话框中的文本不会立即更新
问题描述
我正在使用 bloc 存储从文本字段检索的用户输入并在警报对话框中显示文本。我能够实现它,但我必须单击该按钮两次才能获得预期的结果。所以第一次显示之前的文本输入。我试图发送空白空间来清除该值,但似乎编码忽略了它。不知道我想念什么。
//下面的部分使用 TextEditingController 获取用户输入并在使用后处理。
final myController = TextEditingController();
@override
void dispose() {
myController.dispose();
super.dispose();}
//在 Widget build 中,我使用 FloatingActionButton 来获取用户输入并设置为 bloc
child:Column(mainAxisAlignment: MainAxisAlignment.center,
children: <Widget>[
Padding(
padding: const EdgeInsets.all(16.0),
child: TextField(
controller: myController,
),
),
BlocBuilder<DisplayText, String>(builder: (context,text){
return FloatingActionButton(
onPressed: () {
context.read<DisplayText>().textInput(myController.text.toString());
showDialog(
context: context,
builder: (context) {
return AlertDialog(
// Retrieve the text the that user has entered by using the
// TextEditingController.
content: Text('$text'.toUpperCase()),
actions: [
TextButton(
style: TextButton.styleFrom(
textStyle: TextStyle(
fontSize: 15
),
),
child: Text('CLOSE'),
onPressed: (){
Navigator.of(context, rootNavigator: true).pop('dialog');
context.read<DisplayText>().textInput(''); //intended to clear the
//text variable in bloc file
},
),
],
);
},
);
},
child: const Icon(Icons.text_fields),
);
}),
],
),
//在块文件中
import 'package:flutter_bloc/flutter_bloc.dart';
class DisplayText extends Cubit <String>{
DisplayText() : super ('');
void textInput (String text)=> emit (text);
}
对于这篇长篇文章,我提前道歉,但我试图尽可能地澄清问题。提前致谢
解决方案
推荐阅读
- sass - 如何像在 React 中一样在 Preact 中简单地导入样式?
- python - 找到元素后的Break For循环
- javascript - 打印弹出模式窗口的内容
- lua - lua 中的脚本有问题,错误为零值(本地“xPlayer”)
- java - 如何在 Android Studio 的 datasnapshot/recyclerview 中创建条件?
- c# - 选择一个字符并通过反转部分代码输出整个单词问题
- python - 值错误:一个系列的真值是模棱两可的。使用 a.empty、a.bool()、a.item()、a.any() 或 a.all()
- c++ - USplineComponent Bounds SphereRadius 无限失败
- jenkins - Helm 卸载以删除版本(如果存在)
- java - 合并同一级别的数字