成人午夜视频全免费观看高清-秋霞福利视频一区二区三区-国产精品久久久久电影小说-亚洲不卡区三一区三区一区

FlutterWidgets對(duì)話框-Dialog-創(chuàng)新互聯(lián)

Flutter Widgets 對(duì)話框-Dialog

注意:無(wú)特殊說(shuō)明,F(xiàn)lutter版本及Dart版本如下:

創(chuàng)新互聯(lián)作為成都網(wǎng)站建設(shè)公司,專(zhuān)注成都網(wǎng)站建設(shè)、網(wǎng)站設(shè)計(jì),有關(guān)成都企業(yè)網(wǎng)站建設(shè)方案、改版、費(fèi)用等問(wèn)題,行業(yè)涉及建筑動(dòng)畫(huà)等多個(gè)領(lǐng)域,已為上千家企業(yè)服務(wù),得到了客戶的尊重與認(rèn)可。
  • Flutter版本: 1.12.13+hotfix.5
  • Dart版本: 2.7.0

當(dāng)應(yīng)用程序進(jìn)行重要操作時(shí)經(jīng)常需要用戶進(jìn)行2次確認(rèn),以避免用戶的誤操作,比如刪除文件時(shí),一般會(huì)彈出提示“是否要?jiǎng)h除當(dāng)前文件”,用戶點(diǎn)擊確認(rèn)后才會(huì)進(jìn)行刪除操作,這時(shí)我們可以使用提示框(AlertDialog或者CupertinoAlertDialog)。

根據(jù)設(shè)計(jì)的不同,我們可以選擇Material風(fēng)格的AlertDialog或者Cupertino(ios)風(fēng)格的CupertinoAlertDialog,

Material風(fēng)格基礎(chǔ)用法如下:

RaisedButton(
  child: Text('切換'),
  onPressed: () {
    showDialog(
        context: context,
        builder: (context) {
          return AlertDialog(
            title: Text('提示'),
            content: Text('確認(rèn)刪除嗎?'),
            actions: <Widget>[
              FlatButton(child: Text('取消'),onPressed: (){},),
              FlatButton(child: Text('確認(rèn)'),onPressed: (){},),
            ],
          );
        });
  },
)

Material風(fēng)格效果:

Flutter Widgets 對(duì)話框-Dialog

Cupertino(ios)風(fēng)格基礎(chǔ)用法如下:

RaisedButton(
  child: Text('切換'),
  onPressed: () {
    showCupertinoDialog(
        context: context,
        builder: (context) {
          return CupertinoAlertDialog(
            title: Text('提示'),
            content: Text('確認(rèn)刪除嗎?'),
            actions: <Widget>[
              CupertinoDialogAction(child: Text('取消'),onPressed: (){},),
              CupertinoDialogAction(child: Text('確認(rèn)'),onPressed: (){},),
            ],
          );
        });
  },
)

Cupertino(ios)風(fēng)格效果如下:

Flutter Widgets 對(duì)話框-Dialog

showDialogAlertDialog配合使用展示Material風(fēng)格對(duì)話框, showCupertinoDialogCupertinoAlertDialog配合使用展示iOS風(fēng)格對(duì)話框, showCupertinoDialog點(diǎn)擊空白處是無(wú)法退出對(duì)話框的,而 showDialog點(diǎn)擊空白處默認(rèn)退出對(duì)話框, barrierDismissible屬性控制點(diǎn)擊空白處的行為,用法如下:

showDialog(
    barrierDismissible: false,
    )

AlertDialog的屬性相對(duì)比較豐富,可以設(shè)置title樣式、content樣式、背景顏色、陰影值,設(shè)置是形狀:

AlertDialog(
  title: Text('提示'),
  content: Text('確認(rèn)刪除嗎?'),
  backgroundColor: Colors.lightBlueAccent,
  elevation: 24,
  shape: RoundedRectangleBorder(borderRadius: BorderRadius.circular(50)),
  actions: <Widget>[
    FlatButton(child: Text('取消'),onPressed: (){},),
    FlatButton(child: Text('確認(rèn)'),onPressed: (){},),
  ],
)

Flutter Widgets 對(duì)話框-Dialog

用戶點(diǎn)擊“取消”或者“確定”按鈕后退出對(duì)話框,App需要知道知道用戶選擇了哪個(gè)選項(xiàng),用法如下:

RaisedButton(
  child: Text('切換'),
  onPressed: () async {
    var result = await showDialog(
        context: context,
        builder: (context) {
          return AlertDialog(
            title: Text('提示'),
            content: Text('確認(rèn)刪除嗎?'),
            actions: <Widget>[
              FlatButton(
                child: Text('取消'),
                onPressed: () {
                  Navigator.of(context).pop('cancel');
                },
              ),
              FlatButton(
                child: Text('確認(rèn)'),
                onPressed: () {
                  Navigator.of(context).pop('ok');
                },
              ),
            ],
          );
        });
    print('$result');
  },
)

如果你覺(jué)得系統(tǒng)提供的這2個(gè)風(fēng)格的對(duì)話框不夠個(gè)性,你可以試試SimpleDialog,用法和AlertDialog基本相同,如下:

SimpleDialog(
  title: Text('提示'),
  children: <Widget>[
    Container(
      height: 80,
      alignment: Alignment.center,
      child: Text('確認(rèn)刪除嗎?'),
    ),
    Divider(height: 1,),
    FlatButton(
      child: Text('取消'),
      onPressed: () {
        Navigator.of(context).pop('cancel');
      },
    ),
    Divider(height: 1,),
    FlatButton(
      child: Text('確認(rèn)'),
      onPressed: () {
        Navigator.of(context).pop('ok');
      },
    ),
  ],
)

效果如下:

Flutter Widgets 對(duì)話框-Dialog

如果你覺(jué)得這還是不夠個(gè)性,那可以祭出終極大招了,直接使用Dialog,Dialog可以定制任何對(duì)話框,只需將對(duì)話框的內(nèi)容給child屬性:

Dialog(
  child: MyDialog(),
);

當(dāng)然一般情況下,系統(tǒng)提供的對(duì)話框就夠用了,這幾個(gè)對(duì)話框組件用法基本一樣,不同的地方僅僅是靈活性和使用簡(jiǎn)易程度的不要,Dialog最靈活,但使用起來(lái)比AlertDialog復(fù)雜一些,AlertDialog使用起來(lái)非常簡(jiǎn)單,但布局和基本樣式都已經(jīng)固定好,不如Dialog靈活。

今天的文章對(duì)大家是否有幫助?如果有,請(qǐng)?jiān)谖恼碌撞苛粞院忘c(diǎn)贊,以表示對(duì)我的支持,你們的留言、點(diǎn)贊和轉(zhuǎn)發(fā)關(guān)注是我持續(xù)更新的動(dòng)力!

Flutter Widgets 對(duì)話框-Dialog

更多相關(guān)閱讀:

  • Flutter系列文章總覽
  • Flutter Widgets 之 Expanded和Flexible
  • Flutter Widgets 之 AnimatedList
  • Flutter Widgets 之 SliverAppBar

文章名稱:FlutterWidgets對(duì)話框-Dialog-創(chuàng)新互聯(lián)
文章轉(zhuǎn)載:http://jinyejixie.com/article24/egice.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供品牌網(wǎng)站制作網(wǎng)站營(yíng)銷(xiāo)、品牌網(wǎng)站設(shè)計(jì)、App設(shè)計(jì)微信公眾號(hào)、品牌網(wǎng)站建設(shè)

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)

小程序開(kāi)發(fā)
广丰县| 南靖县| 定边县| 柳林县| 息烽县| 宁晋县| 阿巴嘎旗| 阜新市| 突泉县| 双辽市| 开鲁县| 岚皋县| 武平县| 湘西| 清水县| 观塘区| 卢氏县| 修武县| 沈阳市| 天等县| 读书| 福建省| 民乐县| 清徐县| 黄山市| 永修县| 大邑县| 广河县| 榆中县| 西吉县| 淳化县| 汾阳市| 宁河县| 马公市| 离岛区| 紫阳县| 湘潭县| 炉霍县| 博罗县| 灌南县| 唐山市|