如何使用此按钮中的条件在颤动中显示警报对话框?

Posted

技术标签:

【中文标题】如何使用此按钮中的条件在颤动中显示警报对话框?【英文标题】:how to use condition in this button to show alertdialog in flutter? 【发布时间】:2021-08-15 18:21:38 【问题描述】:
    产品详情
child: ButtonTheme(
                                    child: (TextButton(
                                      child: Text(
                                        'Demande de prix',
                                        style: TextStyle(
                                            color: Colors.white,
                                            fontSize: 12,
                                            fontWeight: FontWeight.w600),
                                      ),
                                      style: TextButton.styleFrom(
                                        primary: Colors.white,
                                        backgroundColor: Color(0xFF2664B5),
                                        onSurface: Colors.white,
                                      ),
                                      onPressed: () 
                                        Navigator.push(
                                          context,
                                          MaterialPageRoute(
                                            builder: (context) => DemandeDevis(
                                              productName:
                                                  (selectedProduitslist[index]
                                                          .titre)
                                                      .toUpperCase(),
                                            ),
                                          ),
                                        );
                                      ,
                                    )),
                                  ),

2.requiredevis

AlertDialog(
  backgroundColor: Colors.white,
  elevation: 20,
  content: SingleChildScrollView(
    child: Form(
      key: _formKey,
      child: ListBody(
        children: <Widget>[
          Container(
            child: Text(
              "Demande de prix",
              textAlign: TextAlign.center,
              style: TextStyle(
                  color: Colors.blue[900],
                  fontSize: 20,
                  fontWeight: FontWeight.bold),
            ),
          ),
          Container(
            width: ResponsiveFlutter.of(context).wp(50),
            padding: EdgeInsets.all(3),
            child: TextFormField(
              controller: largeurController,
              style: TextStyle(color: Colors.black),
              keyboardType: TextInputType.phone,
              // validator: (text) 
              //   if (text == null || text.isEmpty) 
              //     return "Champ obligatoire";
              //   
              //   return null;
              // ,
              decoration: InputDecoration(
                fillColor: Colors.white,
                filled: true,
                hintText: 'Largeur (m)',
                hintStyle: TextStyle(
                  color: Colors.blue[900],
                  fontSize: 10,
                ),
                focusedBorder: OutlineInputBorder(
                  borderSide:
                      BorderSide(color: Colors.blue[900], width: 0.5),
                  borderRadius: BorderRadius.circular(3.0),
                ),
                contentPadding:
                    const EdgeInsets.symmetric(horizontal: 20, vertical: 0),
                border: OutlineInputBorder(
                  borderRadius: BorderRadius.circular(3.0),
                ),
              ),
            ),
          ),
          Container(
            width: ResponsiveFlutter.of(context).wp(50),
            padding: EdgeInsets.all(3),
            child: TextFormField(
              controller: longeurController,
              style: TextStyle(color: Colors.black),
              keyboardType: TextInputType.phone,
              // validator: (text) 
              //   if (text == null || text.isEmpty) 
              //     return "Champ obligatoire";
              //   
              //   return null;
              // ,
              decoration: InputDecoration(
                fillColor: Colors.white,
                filled: true,
                hintText: 'Longeur (m)',
                hintStyle: TextStyle(
                  color: Colors.blue[900],
                  fontSize: 10,
                ),

【问题讨论】:

哪个按钮?你能指定吗? 【参考方案1】:

我假设您在询问如何在按下按钮时显示对话框。

每个按钮都有一个onPressed : 参数,在该onPressed 函数中,您可以执行showDialog() 函数以在UI 中显示一个对话框。下面给出的是代码 sn-p。

TextButton(
 child: Text(
             'Yes!',
              style: TextStyle(color: Theme.of(context).accentColor),),
              onPressed: () => 
               

                //This is the function that will execute when the button is pressed

                showDialog(
                     context : context,
                     builder : (context) => AlertDialog()
                          );                
               ,
            ),
         );
                 

【讨论】:

thank you for your answer, I have other issues I need to use condition because I have some category, so when x category is selected it is necessary that the Alert Dialog showing a specific input... 如果你解释清楚也许我能帮上忙。【参考方案2】:

我相信您想根据条件执行一些 onPressed 功能,例如 if(condition) 执行此操作,否则执行此操作...

    你可以通过内联条件来做到这一点,也称为三元运算符。 例如:

    onPressed: (condition != null) ? () => Navigator.push() : () => showAlertDialog()
    

    你会这样读:

    (your condition) ? [if true ->] do that : [else ->] do that.
    

    你也可以嵌套这个表达式。

    作为替代方案,您可以添加一个调用其他条件函数的函数。

    ...
    onPressed: _decisionFunction,
    ...
    
    void _decisionFunction()
       if(condition == true)
          Navigator.push(...);
        else 
          showDialog(...);
       
    
    

【讨论】:

以上是关于如何使用此按钮中的条件在颤动中显示警报对话框?的主要内容,如果未能解决你的问题,请参考以下文章

在颤动中打开对话框时检测返回按钮按下

如何在颤动中回调谷歌位置服务对话框按钮点击?

警报对话框 - 如何?

如何在颤动中显示带有动画的自定义对话框?

颤动如何让gridview显示像按钮这样的firebase数据

如何在 SwiftUI 中一个接一个地显示多个警报对话框?