|
|
|
@ -14,7 +14,7 @@ import 'package:ansu_ui/buttons/as_back_button.dart';
|
|
|
|
|
///title , AppBar 和 AppBarBottom 均为 `null`时不显示scaffold的AppBar
|
|
|
|
|
///
|
|
|
|
|
///只有AppBarBottom时只显示AppBarBottom中的内容
|
|
|
|
|
class ASScaffold extends StatefulWidget {
|
|
|
|
|
class ASScaffold extends StatelessWidget {
|
|
|
|
|
///标题,可为`String`或`Text`
|
|
|
|
|
final dynamic title;
|
|
|
|
|
|
|
|
|
@ -58,48 +58,47 @@ class ASScaffold extends StatefulWidget {
|
|
|
|
|
this.floatingActionButton,
|
|
|
|
|
}) : super(key: key);
|
|
|
|
|
|
|
|
|
|
@override
|
|
|
|
|
_ASScaffoldState createState() => _ASScaffoldState();
|
|
|
|
|
}
|
|
|
|
|
Widget get _title {
|
|
|
|
|
if (title is String) return Text(title);
|
|
|
|
|
return title ?? SizedBox();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
Widget get _appBar {
|
|
|
|
|
if (title == null && appBar == null && appBarBottom == null) return null;
|
|
|
|
|
return appBar ??
|
|
|
|
|
AppBar(
|
|
|
|
|
brightness: Brightness.light,
|
|
|
|
|
backgroundColor: kForegroundColor,
|
|
|
|
|
elevation: 0,
|
|
|
|
|
leading: leading ?? ASBackButton(),
|
|
|
|
|
actions: actions ?? [],
|
|
|
|
|
centerTitle: true,
|
|
|
|
|
title: DefaultTextStyle(
|
|
|
|
|
style: TextStyle(
|
|
|
|
|
color: kTextColor,
|
|
|
|
|
fontSize: 18.sp,
|
|
|
|
|
fontWeight: FontWeight.bold,
|
|
|
|
|
),
|
|
|
|
|
child: _title,
|
|
|
|
|
),
|
|
|
|
|
bottom: appBarBottom ??
|
|
|
|
|
PreferredSize(
|
|
|
|
|
child: SizedBox(),
|
|
|
|
|
preferredSize: Size.fromHeight(0),
|
|
|
|
|
),
|
|
|
|
|
);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
class _ASScaffoldState extends State<ASScaffold> {
|
|
|
|
|
@override
|
|
|
|
|
Widget build(BuildContext context) {
|
|
|
|
|
return Scaffold(
|
|
|
|
|
key: widget.key,
|
|
|
|
|
endDrawer: widget.endDrawer,
|
|
|
|
|
backgroundColor: widget.backgroundColor,
|
|
|
|
|
bottomNavigationBar: widget.bottomNavigationBar,
|
|
|
|
|
floatingActionButton: widget.floatingActionButton,
|
|
|
|
|
appBar: widget.title == null &&
|
|
|
|
|
widget.appBar == null &&
|
|
|
|
|
widget.appBarBottom == null
|
|
|
|
|
? null
|
|
|
|
|
: widget.appBar ??
|
|
|
|
|
AppBar(
|
|
|
|
|
brightness: Brightness.light,
|
|
|
|
|
backgroundColor: kForegroundColor,
|
|
|
|
|
elevation: 0,
|
|
|
|
|
leading: widget.leading ?? ASBackButton(),
|
|
|
|
|
actions: widget.actions ?? [],
|
|
|
|
|
centerTitle: true,
|
|
|
|
|
title: DefaultTextStyle(
|
|
|
|
|
style: TextStyle(
|
|
|
|
|
color: kTextColor,
|
|
|
|
|
fontSize: 18.sp,
|
|
|
|
|
fontWeight: FontWeight.bold,
|
|
|
|
|
),
|
|
|
|
|
child: widget.title is String
|
|
|
|
|
? Text(widget.title)
|
|
|
|
|
: widget.title ?? SizedBox(),
|
|
|
|
|
),
|
|
|
|
|
bottom: widget.appBarBottom ??
|
|
|
|
|
PreferredSize(
|
|
|
|
|
child: SizedBox(),
|
|
|
|
|
preferredSize: Size.fromHeight(0),
|
|
|
|
|
),
|
|
|
|
|
),
|
|
|
|
|
body: widget.body,
|
|
|
|
|
key: key,
|
|
|
|
|
endDrawer: endDrawer,
|
|
|
|
|
backgroundColor: backgroundColor,
|
|
|
|
|
bottomNavigationBar: bottomNavigationBar,
|
|
|
|
|
floatingActionButton: floatingActionButton,
|
|
|
|
|
appBar: _appBar,
|
|
|
|
|
body: body,
|
|
|
|
|
);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|