91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

AlertDialog彈出時如何禁止背景滾動

小樊
86
2024-09-04 16:47:35
欄目: 編程語言

要在彈出AlertDialog時禁止背景滾動,可以使用WillPopScopeNavigator來實現

import 'package:flutter/material.dart';

void main() {
  runApp(MyApp());
}

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      home: Scaffold(
        appBar: AppBar(title: Text('AlertDialog 示例')),
        body: Home(),
      ),
    );
  }
}

class Home extends StatefulWidget {
  @override
  _HomeState createState() => _HomeState();
}

class _HomeState extends State<Home> {
  bool _isDialogOpen = false;

  void _showDialog() {
    setState(() {
      _isDialogOpen = true;
    });

    showDialog(
      context: context,
      barrierDismissible: false, // 設置為false,以防止對話框在點擊背景時消失
      builder: (BuildContext context) {
        return AlertDialog(
          title: Text('提示'),
          content: Text('這是一個AlertDialog'),
          actions:<Widget>[
            FlatButton(
              child: Text('確定'),
              onPressed: () {
                Navigator.of(context).pop();
                setState(() {
                  _isDialogOpen = false;
                });
              },
            )
          ],
        );
      },
    );
  }

  @override
  Widget build(BuildContext context) {
    return WillPopScope(
      onWillPop: () async {
        if (_isDialogOpen) {
          // 如果對話框打開,不允許返回
          return false;
        } else {
          // 如果對話框關閉,允許返回
          return true;
        }
      },
      child: Stack(
        children: [
          ListView.builder(
            itemCount: 30,
            itemBuilder: (BuildContext context, int index) {
              return ListTile(title: Text('Item $index'));
            },
          ),
          Positioned(
            bottom: 16,
            right: 16,
            child: FloatingActionButton(
              onPressed: _showDialog,
              child: Icon(Icons.add),
            ),
          ),
        ],
      ),
    );
  }
}

在這個示例中,我們使用WillPopScope來控制返回操作。當對話框打開時,我們不允許用戶通過返回按鈕關閉對話框。同時,我們使用setState來更新_isDialogOpen變量,以便在對話框打開或關閉時更改其狀態。

0
正安县| 东港市| 资中县| 永登县| 双桥区| 历史| 鄂尔多斯市| 清涧县| 和田市| 玉溪市| 鱼台县| 霍山县| 屏边| 宣汉县| 三明市| 韶关市| 繁峙县| 赫章县| 凉山| 霍山县| 都匀市| 泰和县| 新化县| 台湾省| 龙井市| 富平县| 凤台县| 湄潭县| 聂荣县| 澄迈县| 海原县| 永昌县| 读书| 行唐县| 大同县| 于都县| 湖南省| 龙口市| 东乌珠穆沁旗| 缙云县| 军事|