标签: flutter-dialog

Flutter:对话框无法通过 PopupMenuItem 点击工作

    showMenu(
      context: context,
      position: RelativeRect.fromLTRB(5000, appBar.preferredSize.height + statusBarHeight!, 0.0, 0.0),
      items: [
        PopupMenuItem(
          child: Text('Cancel'),
          value: 0,
          onTap: () {
            cancelDialog();
          },
        ),
      ],
    );
Run Code Online (Sandbox Code Playgroud)
  cancelDialog() {
    return () {
      showDialog(
        context: context,
        builder: (BuildContext context) => OrderCancel(order!.orderId!),
      );
    };
  }
Run Code Online (Sandbox Code Playgroud)

使用以前的代码无法打开cancelDialog 。但它可以通过单击另一个按钮正确打开

dialog flutter flutter-dialog

12
推荐指数
2
解决办法
1537
查看次数

如何使用 go_router 路由在 Flutter 中显示对话框?

我目前正在使用showGeneralDialog来呈现一个如下所示的对话框弹出窗口:

在此输入图像描述

这一切都很好,但它发生在根Navigator级别,我宁愿将所有视图作为Go Router路由,以便我可以在整个应用程序中以相同的方式控制它们的呈现。

我如何showGeneralDialog在调用路线时使用类似的功能?

GoRoute(
  path: '/settings',
  pageBuilder: (context, state) {
    return ???;
  },
),
Run Code Online (Sandbox Code Playgroud)

flutter flutter-dialog flutter-go-router

10
推荐指数
1
解决办法
5139
查看次数

如何使用 BlocBuilder 在 Flutter 中刷新 Dialog

我有一个对话框,我将其包装在 blocbuilder 中以根据状态类型更新它,但该对话框只是第一次构建,在状态更改后它不会重建。

showDialog(
  context: context,
  builder: (_) {
  BlocBuilder<ExampleCubit, ExampleState>(
      bloc: cubit,
      builder: (context, state) {
        return CustomDialog(
          title:"title",
          onSave: (File file) {
            cubit.uploadImage(file);
          },
          progress: (state is ExtendedExampleState)? state.progress:0,
          onDelete: () {},
          onCancel: () {
             cubit.cancelUploading();
          },
        );
      },
    );
Run Code Online (Sandbox Code Playgroud)

注意:使用 Bloc 模式很重要StateFulBuilder

flutter bloc flutter-dialog cubit flutter-cubit

7
推荐指数
1
解决办法
5692
查看次数

如何在 Flutter 中离开屏幕之前显示确认对话框

我想在处理或离开屏幕之前显示警报对话框,或者最晚显示警告 SnackBar,我该怎么做?

我知道如何显示对话框和 SnackBar,但我不知道我在哪里做,或者我什么时候尝试在处理生活钩子时这样做,但它出错了。由于上下文在显示对话框之前被处理。

flutter flutter-dialog

6
推荐指数
1
解决办法
2932
查看次数

如何在颤振中显示没有上下文的对话框

我试图使用 firebase 云评估,在此过程中,我想在推送通知到达时向用户显示一个弹出对话框。但为了显示对话,我们需要上下文对象作为showDialogis的参数之一BuildContext

我尝试了很多方法,但没有成功。截至目前,我的代码如下所示:

_firebaseMessaging.configure(
        onMessage: (Map<String, dynamic> message) {
          print('onMessage: $message');
          return;
        },
        onBackgroundMessage: myBackgroundMessageHandler,
        onResume: (Map<String, dynamic> message) {
          print('onResume: $message');
          return;
        },
        onLaunch: (Map<String, dynamic> message) {
          print('onLaunch: $message');
            Text('onLaunch: $message'),
          );
          return;
        });
Run Code Online (Sandbox Code Playgroud)

注意:此代码是在单独的类中编写的,我试图在没有任何第三部分库的情况下实现它。

flutter firebase-cloud-messaging flutter-dialog

5
推荐指数
1
解决办法
4215
查看次数

仅在处置当前小部件之前关闭所有对话框和弹出窗口,不应删除其他小部件

我一直在从事一个项目,该项目要求我根据移动设备的orientation.

例如,在portrait方向的情况下,我需要显示一个小部件(比如说纵向小部件),在方向的情况下landscape,我需要显示另一个小部件(我们称之为横向小部件)。

我用过OrientationBuilder

实际问题:在方向更改时,所有Dialogs和/OptionMenu或任何其他 Popup 类型的 Widget 都不会关闭。如何在方向改变时关闭它们?

重现问题的步骤:

  1. 运行下面给出的应用程序代码[用于重现问题的示例应用程序]
  2. 长按应用程序主体以查看对话框或单击OptionMenu左上角的
  3. 更改设备方向,您将看到小部件主体已根据方向发生变化,但小Popuped部件仍然可见。

注意:请注意,我需要针对此问题的全局解决方案。仅专门围绕此代码提供解决方案对我来说没有任何用处。这是我为了更好地理解问题而提供的示例代码,我根本不使用此代码。

示例应用程序代码:

// main.dart
import 'package:flutter/material.dart';

void main() => runApp(MyApp());

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'Flutter Demo',
      theme: ThemeData(
        primarySwatch: Colors.blue,
      ),
      home: MyHomePage(),
    );
  }
}

class MyHomePage extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return OrientationBuilder(builder: (context, orientation) {
      bool isLandscape = …
Run Code Online (Sandbox Code Playgroud)

flutter flutter-dialog

2
推荐指数
1
解决办法
4726
查看次数

Flutter 显示全屏对话框

我有以下函数来显示对话框,我使用媒体查询将其设置为 100%,但是当它运行时,我仍然看到对话框周围有白色边距。

如何存档全屏对话框?

Future<void> showLoadingDialog(BuildContext context, GlobalKey key) async {

    Widget myDialog = SimpleDialog(
        key: key,
        backgroundColor: Colors.black54,
        children: <Widget>[
          Container(
            width: MediaQuery.of(context).size.width,
            child: Column(
                crossAxisAlignment: CrossAxisAlignment.center,
                children: [
                  CircularProgressIndicator(),
                  SizedBox(height: 10,),
                  Text("Please Wait....",style: TextStyle(color: accentColor),)
                ]),
          )
        ]);

    return showDialog<void>(
        context: context,
        barrierDismissible: false,
        builder: (BuildContext context) {
          return myDialog;
        });
  }
Run Code Online (Sandbox Code Playgroud)

flutter flutter-layout flutter-dialog

2
推荐指数
1
解决办法
6333
查看次数