123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113 |
- /*
- * @Author: XianKaiQun
- * @Date: 2020-09-08 16:48:28
- * @LastEditors: XianKaiQun
- * @LastEditTime: 2020-10-27 11:06:38
- * @Description:
- */
- import 'package:flutter/material.dart';
- import 'package:wisdom_cli/wisdom_cli.dart';
- ///确认弹窗的基本视图样式
- class WModal extends StatelessWidget {
- const WModal({
- Key? key,
- this.header,
- this.content,
- this.iconTheme,
- this.headerStyle,
- this.bodyStyle,
- this.buttonTheme,
- this.footers,
- }) : super(key: key);
- final Widget? header;
- final Widget? content;
- final IconThemeData? iconTheme;
- final TextStyle? headerStyle;
- final TextStyle? bodyStyle;
- final ButtonThemeData? buttonTheme;
- final List<Widget>? footers;
- @override
- Widget build(BuildContext context) {
- final style = WTheme.of(context);
- final colorScheme = style.colorScheme;
- Widget? headerWidget = header;
- if (headerWidget != null) {
- headerWidget = DefaultTextStyle(
- style: TextStyle(
- fontSize: 18.pt,
- fontWeight: FontWeight.bold,
- color: colorScheme.text,
- ).merge(headerStyle),
- child: headerWidget,
- );
- headerWidget = IconTheme(
- data: IconTheme.of(context).copyWith(size: 18.pt).merge(iconTheme),
- child: headerWidget,
- );
- }
- Widget? contentWidget = content;
- if (contentWidget != null) {
- contentWidget = DefaultTextStyle(
- textAlign: TextAlign.center,
- style: TextStyle(
- fontSize: 16.pt,
- color: colorScheme.text,
- ).merge(headerStyle),
- child: contentWidget,
- );
- contentWidget = ConstrainedBox(
- constraints: BoxConstraints(
- minHeight: 30.pt,
- ),
- child: contentWidget,
- );
- }
- Widget footerWidget = Row(
- mainAxisAlignment: MainAxisAlignment.spaceEvenly,
- children: footers!,
- );
- return Container(
- alignment: Alignment.center,
- color: Colors.black26,
- child: Material(
- color: Colors.white,
- borderRadius: BorderRadius.circular(20.pt),
- child: ButtonTheme.fromButtonThemeData(
- data: ButtonThemeData(
- height: 44.pt,
- textTheme: ButtonTextTheme.primary,
- ),
- child: Container(
- padding: EdgeInsets.all(20.pt),
- constraints: BoxConstraints(
- minWidth: 305.pt,
- maxWidth: 305.pt,
- minHeight: 150.pt,
- maxHeight: 400.pt,
- ),
- child: Column(
- mainAxisSize: MainAxisSize.min,
- children: [
- if (headerWidget != null) ...[
- headerWidget,
- SizedBox(height: 25.pt),
- ],
- if (contentWidget != null) ...[
- contentWidget,
- SizedBox(height: 25.pt),
- ],
- footerWidget,
- ],
- ),
- ),
- ),
- ),
- );
- }
- }
|