标签: flutter-alertdialog

如何在Flutter中刷新AlertDialog?

目前,我有AlertDialog一个IconButton。用户可以单击IconButton,每次单击都有两种颜色。问题是我需要关闭AlertDialog并重新打开以查看颜色图标的状态更改。我想在用户单击时立即更改IconButton的颜色。

这是代码:

bool pressphone = false;
//....
new IconButton(
   icon: new Icon(Icons.phone),
   color: pressphone ? Colors.grey : Colors.green,
   onPressed: () => setState(() => pressphone = !pressphone),
),
Run Code Online (Sandbox Code Playgroud)

flutter flutter-layout flutter-alertdialog

13
推荐指数
4
解决办法
5660
查看次数

是否可以在 Flutter 中将类作为参数传递给函数?

在这里,我有一个实用程序类,其中有一个用于显示 DialogBox 的函数,所以我正在尝试制作一个 AlertDialog Box,它可以在整个项目的任何地方使用。

因此,我必须将 Title、description 作为参数传递,并且还想传递 Class name,以便在按下警报对话框内的按钮时我们可以导航到该屏幕

class DialogBox {
  static DialogBox dialogBox = null;

  static DialogBox getInstance() {
    if (dialogBox == null) {
      dialogBox = DialogBox();
    }
    return dialogBox;
  }

  showAlertDialog(BuildContext context, String alertTitle, String alertMessage) {
    showDialog(
        context: context,
        barrierDismissible: false,
        builder: (context) {
          return AlertDialog(
            shape: RoundedRectangleBorder(
              borderRadius: BorderRadius.circular(15.0),
            ),
            title: Center(child: Text(alertTitle)),
            content: Column(
              mainAxisSize: MainAxisSize.min,
              children: <Widget>[
                Text(
                  alertMessage,
                  textAlign: TextAlign.center,
                ),
                Row(
                    mainAxisAlignment: MainAxisAlignment.center,
                    crossAxisAlignment: CrossAxisAlignment.end,
                    children: <Widget>[
                      FlatButton(
                        child: …
Run Code Online (Sandbox Code Playgroud)

utility-method flutter flutter-alertdialog

11
推荐指数
1
解决办法
5904
查看次数

如何在Flutter中制作AlertDialog?

我正在学习在Flutter中构建应用程序。现在我来警报对话框。我之前在AndroidiOS中完成过这些操作,但是如何在Flutter中发出警报?

以下是一些相关的SO问题:

我想进行更一般的规范问答,所以我的答案如下。

dart flutter flutter-alertdialog

6
推荐指数
9
解决办法
7351
查看次数

如何从 Flutter 中的方法获取 AlertDialog 回调?

我有AlertDialog静态方法,因为我想在用户单击OK按钮时获得回调。

我尝试使用typedef但无法理解。

以下是我的代码:

class DialogUtils{

  static void displayDialogOKCallBack(BuildContext context, String title,
      String message)
  {
    showDialog(
      context: context,
      builder: (BuildContext context) {
         return AlertDialog(
          title: new Text(title, style: normalPrimaryStyle,),
          content: new Text(message),
          actions: <Widget>[
            new FlatButton(
              child: new Text(LocaleUtils.getString(context, "ok"), style: normalPrimaryStyle,),
              onPressed: () {
                Navigator.of(context).pop();
                // HERE I WANTS TO ADD CALLBACK
              },
            ),
          ],
        );
      },
    );
  }
}
Run Code Online (Sandbox Code Playgroud)

function callback flutter flutter-alertdialog

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

如何在StatelessWidget的any函数中获取上下文?

我们想在一些异步处理(例如网络进程)之后显示一个 AlertDialog。

从外部类调用“showAlertDialog()”时,我想在没有上下文的情况下调用它。有什么好办法吗?

class SplashPage extends StatelessWidget implements SplashView {
  BuildContext _context;
  @override
  Widget build(BuildContext context) {
    this._context = context;
    ...
  }
Run Code Online (Sandbox Code Playgroud)

我已经考虑过上述方法,但我担心附带问题。

帮助

我当前的代码

class SplashPage extends StatelessWidget implements SplashView {

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      backgroundColor: MyStoreColors.eats_white1_ffffff,
      body: Center(
        child: new SvgPicture.asset('assets/ic_splash.svg'),
      ),
    );
  }

  @override
  void showAlertDialog() {

    showDialog<void>(
      context: /*How to get context?*/,
      builder: (BuildContext context) {
        return AlertDialog(
          title: Text('Not in stock'),
          content: const Text('This item is no longer available'),
          actions: <Widget>[
            FlatButton( …
Run Code Online (Sandbox Code Playgroud)

flutter statelesswidget flutter-alertdialog

5
推荐指数
2
解决办法
4367
查看次数

在 TextFormField Flutter 的值更改时禁用 AlertDialog 按钮

在我的第一个Flutter 项目中,我试图从Alert Dialog内的TextFormField获取值。我正在尝试验证输入,并根据该验证我想启用/禁用AlertDialog按钮。

我为显示对话框做了什么:

 _displayDialog(BuildContext context) async {
    return showDialog(
        context: context,
        builder: (context) {
          return AlertDialog(
            title: Text('TextField AlertDemo'),
            content: _container(),
            actions: <Widget>[
              RaisedButton(
                onPressed: isValid
                    ? () {
                        print("ISVALID:");
                      }
                    : null,
                child: Text("Click Me"),
              )
            ],
          );
        });
  }
Run Code Online (Sandbox Code Playgroud)

_container()方法代码:

 Widget _container() {
    return Container(
      margin: EdgeInsets.all(25),
      child: Center(
        child: Column(
          mainAxisAlignment: MainAxisAlignment.center,
          children: [
            TextFormField(
              onChanged: (text) {
                setState(() {
                  if (text.length > 5) {
                    isValid = true; …
Run Code Online (Sandbox Code Playgroud)

dialog dart flutter flutter-alertdialog

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

如何关闭特定对话框

我正在从另一个对话框打开一个对话框并尝试关闭第一个对话框,但它正在关闭最近的对话框。类似的git 问题

我试过了

  • 穿上ValueKeyAlertDialog
  • rootNavigator:true在弹出时使用
  • 保持context变量并做Navigator.of(specifiqContext).pop()

但它们都不起作用。在dartPad上重现问题的代码。

class MultiDialogTest extends StatefulWidget {
  const MultiDialogTest({Key? key}) : super(key: key);

  @override
  State<MultiDialogTest> createState() => _MultiDialogTestState();
}

class _MultiDialogTestState extends State<MultiDialogTest> {
  BuildContext? dialog1Context, dialog2Context;

  Future<void> _showDialog1(BuildContext context) async {
    await showDialog(
        context: context,
        barrierDismissible: false,
        builder: (c) {
          dialog1Context = c;
          return AlertDialog(
            key: const ValueKey("dialog 1"),
            title: const Text("Dialog 1"),
            content: ElevatedButton(
              child: const Text("close dialog2"),
              onPressed: () {
                if …
Run Code Online (Sandbox Code Playgroud)

flutter flutter-alertdialog

5
推荐指数
2
解决办法
6608
查看次数

键盘打开时如何避免底部溢出(在警报对话框中)

在此屏幕中,每次我在警报文本字段中打开键盘时,我都会面临溢出。我已经尝试把SingleChildScrollVIew所有的地方都放进去了,但没有解决。这是具有警报对话框的组件:

Future<void> _showAlertDialog() async {
    return showDialog<void>(
      context: context,
      builder: (BuildContext context) {
        return AlertDialog(
          title: Text('Type the Name', textAlign: TextAlign.center,
            style: TextStyle(color: Colors.white)),
          content: TextField(
            controller: _nameController,
            keyboardType: TextInputType.text,
            textCapitalization: TextCapitalization.sentences,
          )
        );
      },
    );
  }

Run Code Online (Sandbox Code Playgroud)

这是构建函数:

Widget build(BuildContext context) {
    return Scaffold(
      resizeToAvoidBottomPadding: false,
      body: Column(
        crossAxisAlignment: CrossAxisAlignment.start,
        children: [
          TableCalendar(//default code),
            Divider(),
            _showList(),
          ],
        ),

      floatingActionButton: FloatingActionButton(
        child: Icon(Icons.add, color: Colors.white,),
        onPressed: () => _showCity(context) 
      ),
    );
  }
Run Code Online (Sandbox Code Playgroud)

_showAlertDialog在内部调用(_showCity参见构建 > 浮动操作按钮 > …

dart flutter flutter-layout flutter-alertdialog

3
推荐指数
1
解决办法
4822
查看次数

如何在Flutter中制作Alert Dialog晃动动画

我想像这样摇动警报对话框:(不仅是文本,还有整个弹出对话框)

https://www.youtube.com/watch?v=IaHMoifUBSw

当用户单击按钮时,如何震动整个警报对话框?

dart flutter flutter-layout flutter-animation flutter-alertdialog

3
推荐指数
1
解决办法
1380
查看次数

Flutter Windows:如果将 TextField 放置在 AlertDialog 内,则它不允许有空间

一小时前,当我将 TextField 放入 AlertDialog 中时,我发现了一个奇怪的行为,它不允许输入空格,否则它的行为正常,这是我的代码:

\n

//================Flutter doctor -v\n[\xe2\x88\x9a] Flutter(频道稳定,2.0.2,在 Microsoft Windows 上 [版本 10.0.18363.1316] ,语言环境 en-US)\n\xe2\x80\xa2 Flutter 版本 2.0.2,位于 C:\\Flutter\\flutter-latest\n\xe2\x80\xa2 框架修订版 8962f6dc68(5 天前),2021-03 -11 13:22:20 -0800\n\xe2\x80\xa2 引擎修订版 5d8bf811b3\n\xe2\x80\xa2 Dart 版本 2.12.1

\n

[\xe2\x88\x9a] Android 工具链 - 为 Android 设备开发(Android SDK 版本 29.0.3)\n\xe2\x80\xa2 Android SDK,位于 C:\\Users\\user\\AppData\\Local\\ Android\\sdk\n\xe2\x80\xa2 平台 android-30,构建工具 29.0.3\n\xe2\x80\xa2 Java 二进制文件位于:C:\\Program Files\\Android\\Android Studio\\ jre\\bin\\java\n\xe2\x80\xa2 Java 版本 OpenJDK 运行时环境(内部版本 1.8.0_202-release-1483-b03)\n\xe2\x80\xa2 接受所有 Android 许可证。

\n

[\xe2\x88\x9a] Chrome - 为网络开发\n\xe2\x80\xa2 Chrome,位于 C:\\Users\\user\\AppData\\Local\\Google\\Chrome\\Application\\chrome 。EXE文件

\n

[\xe2\x88\x9a] Visual Studio - 针对 Windows 进行开发(Visual Studio …

widget dart flutter flutter-alertdialog flutter-windows

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