import 'package:ansu_ui/theme/as_theme.dart'; import 'package:flutter/material.dart'; import 'package:ansu_ui/styles/as_colors.dart'; import 'package:ansu_ui/buttons/as_back_button.dart'; import 'package:flutter/services.dart'; ///ASScaffold /// ///made with Scaffold from `Material` /// /// /// ///`title`,`body`,`leading`,`bottomNavigationBar`,`appBarBottom`,`appBar` /// ///title , AppBar 和 AppBarBottom 均为 `null`时不显示scaffold的AppBar /// ///只有AppBarBottom时只显示AppBarBottom中的内容 class ASScaffold extends StatelessWidget { ///标题,可为`String`或`Text` final dynamic title; /// `Scaffold` body final Widget? body; /// `Scaffold` leading final Widget? leading; /// `Scaffold` actions final List? actions; /// `Scaffold` bottomNavigationBar final Widget? bottomNavigationBar; /// `AppBar` appBarBottom final PreferredSizeWidget? appBarBottom; /// `EndDrawer` endDrawer /// /// 右方向的抽屉 final Widget? endDrawer; /// `AppBar` appBar final Widget? appBar; final SystemUiOverlayStyle? systemStyle; ///背景色 final Color backgroundColor; final Widget? floatingActionButton; ASScaffold({ Key? key, this.title, this.leading, this.body, this.bottomNavigationBar, this.appBarBottom, this.endDrawer, this.appBar, this.backgroundColor = kBackgroundColor, this.actions, this.floatingActionButton, this.systemStyle, }) : super(key: key); Widget get _title { if (title is String) return Text(title); return title; } Widget? get _appBar { if (title == null && appBar == null && appBarBottom == null) return null; return appBar ?? AppBar( leading: leading ?? ASBackButton(), actions: actions ?? [], title: _title, bottom: appBarBottom ?? PreferredSize( child: SizedBox(), preferredSize: Size.fromHeight(0), ), ); } @override Widget build(BuildContext context) { return AnnotatedRegion( value: systemStyle ?? ASTheme.defaultSystemStyle, child: Scaffold( key: key, endDrawer: endDrawer, backgroundColor: backgroundColor, bottomNavigationBar: bottomNavigationBar, floatingActionButton: floatingActionButton, appBar: _appBar as PreferredSizeWidget?, body: body, ), ); } }