当前位置: 首页 > 知识库问答 >
问题:

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

冉绯辞
2023-03-14
  1. 产品详细信息
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.所需设备

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,
                ),

共有2个答案

赫连实
2023-03-14

我相信你会想做一些基于条件的功能,比如如果(条件)这样做,否则就这样做。。。

>

  • 您可以通过内联条件(也称为三元运算符)来完成此操作。例如:

    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(...);
       }
    }
    

  • 牧璞
    2023-03-14

    我假设你问的是按下按钮时如何显示对话框。

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

    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()
                              );                
                   },
                ),
             );
                     
    
     类似资料: