首页 > 解决方案 > 警报对话框中的文本不会立即更新

问题描述

我正在使用 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);
}

对于这篇长篇文章,我提前道歉,但我试图尽可能地澄清问题。提前致谢

标签: flutterdartbloc

解决方案


推荐阅读