标签:const String 自定义 color final 源码 child Container Flutter
视频直播源码,Flutter实现一个自定义的弹窗
import 'package:flutter/material.dart';
class AppDialog extends Dialog {
final String title;
final String? confirm;
final String? cancel;
final String? content;
final String? cancelColor;
final String? confirmColor;
final bool? showCancel;
final OnDialogClickListener? clickListener;
const AppDialog(
{this.cancelColor = '#00000',
this.confirmColor = ''#576B95'',
this.title = '标题',
this.cancel = '取消',
this.confirm = '确定',
this.content = '',
this.showCancel = true,
this.clickListener,
Key? key})
: super(key: key);
@override
Widget build(BuildContext context) {
return Center(
child: Container(
constraints: const BoxConstraints(maxHeight: 600),
width: double.infinity,
margin: const EdgeInsets.all(30),
decoration: const ShapeDecoration(
color: Colors.white,
shape: RoundedRectangleBorder(
borderRadius: BorderRadius.all(Radius.circular(5.0)))),
child: Column(
mainAxisAlignment: MainAxisAlignment.start,
crossAxisAlignment: CrossAxisAlignment.center,
mainAxisSize: MainAxisSize.min,
children: [
Container(
margin: const EdgeInsets.only(top: 12, bottom: 14),
child: Text(
title,
style: const TextStyle(
fontSize: 18,
fontWeight: FontWeight.bold,
color: Colors.black),
),
),
Offstage(
offstage: content!.isEmpty,
child: Container(
margin: const EdgeInsets.only(bottom: 17),
child: Text(
content!,
style:
TextStyle(fontSize: 17, color: ThemeColors.color7f7f7f),
),
),
),
Container(
height: 0.7,
color: ThemeColors.colorE8E8E8,
),
getBottomWidget(context),
],
),
),
);
}
getBottomWidget(context) {
if (showCancel!) {
return SizedBox(
height: 43,
child: Row(
children: <Widget>[
Expanded(
child: InkWell(
child: Container(
alignment: Alignment.center,
child: Text(
cancel!,
style: const TextStyle(
fontSize: 17,
color: Colors.black,
fontWeight: FontWeight.bold),
),
),
onTap: () => {
clickListener?.onCancel(),
Navigator.of(context).pop(),
},
),
),
Container(
height: 43,
width: 0.7,
color: ThemeColors.colorE8E8E8,
),
Expanded(
child: InkWell(
child: Container(
alignment: Alignment.center,
child: Text(
confirm!,
style: TextStyle(
fontSize: 17,
color: ThemeColors.color576B95,
fontWeight: FontWeight.bold),
),
),
onTap: () => {clickListener?.onConfirm(), Navigator.of(context).pop()},
),
),
],
),
);
} else {
return InkWell(
child: Container(
height: 43,
alignment: Alignment.center,
child: Text(
confirm!,
style: TextStyle(
fontSize: 17,
color: ThemeColors.color576B95,
fontWeight: FontWeight.bold),
),
),
onTap: () => {
clickListener?.onConfirm(),
Navigator.of(context).pop(),
},
);
}
}
}
abstract class OnDialogClickListener {
void onConfirm();
void onCancel();
}
以上就是 视频直播源码,Flutter实现一个自定义的弹窗,更多内容欢迎关注之后的文章
标签:const,String,自定义,color,final,源码,child,Container,Flutter 来源: https://www.cnblogs.com/yunbaomengnan/p/16591426.html
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。