一个通用的对话框结构,可指定头、中、尾处的组件。拥有标题、内容的文字样式和边距,影深、形状等属性。
相关组件
AlertDialog基本使用
【title】 : 顶部组件 【Widget】
【content】 : 内容组件 【Widget】
【titleTextStyle】 : 顶部文字样式 【TextStyle】
【contentTextStyle】 : 内容文字样式 【TextStyle】
【titlePadding】 : 顶部内边距 【EdgeInsetsGeometry】
【contentPadding】 : 内容内边距 【EdgeInsetsGeometry】
【actions】 : 右下角组件列表 【List
【backgroundColor】 : 右下角组件列表 【背景色】
【elevation】 : 右下角组件列表 【背景色】
【shape】 : 影深 【double】
import 'package:flutter/material.dart';
class CustomAlertDialog extends StatelessWidget {
@override
Widget build(BuildContext context) {
return Column(
children: <Widget>[
_buildRaisedButton(context),
_buildAlertDialog(),
],
);
}
Widget _buildRaisedButton(BuildContext context) => RaisedButton(
shape: RoundedRectangleBorder(
borderRadius: BorderRadius.all(Radius.circular(10))),
color: Colors.blue,
onPressed: () {
showDialog(context: context, builder: (ctx) => _buildAlertDialog());
},
child: Text(
'Just Show It !',
style: TextStyle(color: Colors.white),
),
);
Widget _buildAlertDialog() {
return AlertDialog(
title: _buildTitle(),
titleTextStyle: TextStyle(fontSize: 20, color: Colors.black),
titlePadding: EdgeInsets.only(
top: 5,
left: 20,
),
contentPadding: EdgeInsets.symmetric(horizontal: 5),
backgroundColor: Colors.white,
content: _buildContent(),
actions: <Widget>[
Icon(Icons.android, color: Colors.blue,),
Icon(Icons.add, color: Colors.blue,),
Icon(Icons.g_translate, color: Colors.blue,),
Icon(Icons.games, color: Colors.blue,),
],
elevation: 4,
shape: RoundedRectangleBorder(
borderRadius: BorderRadius.all(Radius.circular(10))),
);
}
Widget _buildTitle() {
return Row(
//标题
children: <Widget>[
Image.asset(
"assets/images/icon_head.png",
width: 30,
height: 30,
),
SizedBox(width: 10,),
Expanded(
child: Text(
"关于",
style: TextStyle(fontSize: 18),
)),
CloseButton()
],
);
}
Widget _buildContent() {
return Column(
mainAxisSize: MainAxisSize.min,
children: <Widget>[
Padding(
padding: const EdgeInsets.all(10.0),
child: Text(
' FlutterUnit是【张风捷特烈】的开源项目,'
'收录Flutter的200+组件,并附加详细介绍以及操作交互,'
'希望帮助广大编程爱好者入门Flutter。'
'更多知识可以关注掘金账号、公众号【编程之王】。',
style: TextStyle(color: Color(0xff999999), fontSize: 16),
textAlign: TextAlign.justify,
),
),
],
);
}
}