Dart 语言 AlertDialog 警告对话框示例

Dart阿木 发布于 2025-06-19 4 次阅读


Dart 语言 AlertDialog 警告对话框示例详解

在 Dart 语言中,`AlertDialog` 是一个常用的 UI 组件,用于向用户显示警告信息、提示信息或获取用户输入。本文将围绕 `AlertDialog` 的使用,通过一系列示例来详细介绍其在 Dart 应用中的实现和应用场景。

`AlertDialog` 是 Flutter 框架中的一部分,而 Flutter 是 Google 开发的一个开源 UI 框架,用于构建美观、高性能的移动应用。在 Flutter 应用中,`AlertDialog` 可以用来显示模态对话框,这些对话框可以包含标题、内容、按钮以及可选的输入字段。

环境准备

在开始之前,请确保您已经安装了 Dart 和 Flutter 环境。您可以从 [Flutter 官方网站](https://flutter.dev/docs/get-started/install) 获取详细的安装指南。

示例 1:简单的 AlertDialog

以下是一个简单的 `AlertDialog` 示例,它只包含标题和内容:

dart

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('Simple AlertDialog'),


),


body: Center(


child: ElevatedButton(


onPressed: () {


showDialog(


context: context,


builder: (BuildContext context) {


return AlertDialog(


title: Text('Alert Dialog'),


content: Text('This is a simple alert dialog.'),


actions: <Widget>[


TextButton(


child: Text('OK'),


onPressed: () {


Navigator.of(context).pop();


},


),


],


);


},


);


},


child: Text('Show AlertDialog'),


),


),


),


);


}


}


在这个示例中,我们创建了一个包含一个按钮的页面。当用户点击这个按钮时,会弹出一个 `AlertDialog`,其中包含标题 "Alert Dialog" 和内容 "This is a simple alert dialog."。点击 "OK" 按钮后,对话框会关闭。

示例 2:带有多个按钮的 AlertDialog

在实际应用中,我们可能需要根据用户的选择执行不同的操作。以下是一个带有多个按钮的 `AlertDialog` 示例:

dart

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 with Multiple Buttons'),


),


body: Center(


child: ElevatedButton(


onPressed: () {


showDialog(


context: context,


builder: (BuildContext context) {


return AlertDialog(


title: Text('Alert Dialog'),


content: Text('Choose an option:'),


actions: <Widget>[


TextButton(


child: Text('Option 1'),


onPressed: () {


Navigator.of(context).pop('Option 1');


},


),


TextButton(


child: Text('Option 2'),


onPressed: () {


Navigator.of(context).pop('Option 2');


},


),


TextButton(


child: Text('Cancel'),


onPressed: () {


Navigator.of(context).pop();


},


),


],


);


},


).then((value) {


if (value != null) {


ScaffoldMessenger.of(context).showSnackBar(


SnackBar(content: Text('You selected: $value')),


);


}


});


},


child: Text('Show AlertDialog with Buttons'),


),


),


),


);


}


}


在这个示例中,当用户点击按钮时,会弹出一个包含三个按钮的 `AlertDialog`。用户可以选择 "Option 1"、"Option 2" 或 "Cancel"。点击 "Cancel" 或关闭对话框时,`showDialog` 的返回值将是 `null`。点击其他按钮时,返回值将是按钮的文本。然后,我们使用 `.then()` 方法来处理用户的选择,并显示一个 `SnackBar` 来通知用户他们的选择。

示例 3:带有输入字段的 AlertDialog

在某些情况下,我们可能需要从用户那里获取输入。以下是一个带有输入字段的 `AlertDialog` 示例:

dart

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 with Input Field'),


),


body: Center(


child: ElevatedButton(


onPressed: () {


showDialog(


context: context,


builder: (BuildContext context) {


return AlertDialog(


title: Text('Enter Your Name'),


content: TextField(


decoration: InputDecoration(


labelText: 'Name',


border: OutlineInputBorder(),


),


),


actions: <Widget>[


TextButton(


child: Text('Submit'),


onPressed: () {


Navigator.of(context).pop();


},


),


],


);


},


);


},


child: Text('Show AlertDialog with Input Field'),


),


),


),


);


}


}


在这个示例中,当用户点击按钮时,会弹出一个 `AlertDialog`,其中包含一个 `TextField` 用于输入用户的名字。点击 "Submit" 按钮后,对话框会关闭,但不会执行任何操作,因为我们没有处理输入字段的数据。

总结

`AlertDialog` 是 Flutter 框架中一个非常有用的 UI 组件,可以用来向用户显示警告信息、提示信息或获取用户输入。通过本文的示例,我们了解了如何创建简单的 `AlertDialog`、带有多个按钮的 `AlertDialog` 以及带有输入字段的 `AlertDialog`。在实际应用中,您可以根据需要调整 `AlertDialog` 的样式和行为,以提供更好的用户体验。