我是新加入集团模式和流媒体的人.我想在按下按钮时显示一个alert 对话框,但我找不到方法.实际上我的代码是:

Widget button() {
  return RaisedButton(
      child: Text('Show alert'),
      color: Colors.blue[700],
      textColor: Colors.white,
      onPressed: () {
        bloc.submit();
      });
   }



return Scaffold(
        appBar: AppBar(
          title: Text("Title"),
        ),
        body: StreamBuilder(
            stream: bloc.getAlert,
            builder: (context, snapshot) {
              if (snapshot.hasData) {
                return Text("I have Dataaaaaa ${snapshot.data}");
              } else
                return ListView(
                  children: <Widget>[
                    Container(
                     button()
                    )
                ...

和集团:

final _submissionController = StreamController();
Stream get submissionStream=> _submissionController.stream;
Sink get submissionSink=> _submissionController.sink;

我试着做一些类似的事情:

Widget button() {
  return StreamBuilder(
stream: submissionStream
builder: (context, snapshot){
if (snapshot.hasData){
return showDialog(...)
}else
 return RaisedButton(
      child: Text('Show alert'),
      color: Colors.blue[700],
      textColor: Colors.white,
      onPressed: () {
        bloc.submit();
      });
   }

但是,当然,它没有起作用.

推荐答案

您不能在生成工作时显示对话框.当您有新数据时,您将创建一个新的小部件.在这种情况下不使用流可能更好,但如果有必要,您应该使用

WidgetsBinding.instance.addPostFrameCallback((_) => yourFunction(context));

Future.microtask(() => showDialogFunction(context));

在您的IF中

if (snapshot.hasData) { WidgetsBinding.instance.addPostFrameCallback((_) => showDialogFunction(context)); }

此代码将在build方法之后启动,因此将立即显示对话框.

Bloc function always return widget, so always return button() 或 different wiget when stream has data

Flutter相关问答推荐

Flutter -带有TextAlign.right的文本字段不显示空白

如何在应用栏中将列置于中心

如何在Flutter 屏幕中添加箭头形状

错误:找不到字体功能类型.Ffltter Google_Fonts包错误

如何实现Flutter 梳理机图像的小量移动

缩短经常使用的行Theme.of(context).colorScheme

'Flutter的无效常数值错误

如何将assets资源 实体类型转换为文件类型?

为什么当我使用Riverpod更新状态时,列表会被刷新?

确保通过在CheckIfFavoriteMovieEvent((event,emit){...})上注册处理程序误差

try 使用fl_Chart of Ffltter,但在导入它时遇到以下错误:Error:';TextScaler';is;t a type

StateNotifer正在riverpod中提供初始状态值(bool)

Flutter 附近的连接

Flutter:如何设置 PersistentFooterButtons 背景?

我对 Flutter Apk 有疑问

如何使用 Rrect 或类似工具在 flutter 中绘制梯形线?

Flutter Websockets MacOS:相同的代码在调试模式下有效,但在发布模式下无效:(操作系统错误:提供了 node 名或服务名..)

如何在 Flutter 中将列小部件添加到行小部件?

如何使用 Row 和 Column 制作 L 形布局?

出现错误;运算符[]不是为对象类型定义的?功能()'