From acbc775c06059422d280ae588144c6cf9df36881 Mon Sep 17 00:00:00 2001 From: laiiihz Date: Tue, 24 Nov 2020 10:26:54 +0800 Subject: [PATCH] =?UTF-8?q?=E6=B7=BB=E5=8A=A0drawer?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- example/lib/example_scaffold.dart | 20 ++++++++++++- lib/ansu_ui.dart | 4 ++- lib/{tabbar => bar}/as_tab_indicator.dart | 0 lib/{tabbar => bar}/as_tabbar.dart | 2 +- lib/drawer/as_drawer.dart | 34 +++++++++++++++++++++++ lib/scaffold/as_scaffold.dart | 7 +++++ lib/utils/screen_adapter.dart | 5 ++++ 7 files changed, 69 insertions(+), 3 deletions(-) rename lib/{tabbar => bar}/as_tab_indicator.dart (100%) rename lib/{tabbar => bar}/as_tabbar.dart (95%) create mode 100644 lib/drawer/as_drawer.dart create mode 100644 lib/utils/screen_adapter.dart diff --git a/example/lib/example_scaffold.dart b/example/lib/example_scaffold.dart index 85c367c..072a3d7 100644 --- a/example/lib/example_scaffold.dart +++ b/example/lib/example_scaffold.dart @@ -1,5 +1,6 @@ import 'package:ansu_ui/ansu_ui.dart'; import 'package:flutter/material.dart'; +import 'package:get/get.dart'; class ExampleScaffold extends StatefulWidget { ExampleScaffold({Key key}) : super(key: key); @@ -26,12 +27,29 @@ class _ExampleScaffoldState extends State @override Widget build(BuildContext context) { return ASScaffold( - title: '标题', + title: '标题 SCaffold', appBarBottom: ASTabBar( items: tabs, isScrollable: true, controller: _tabController, ), + endDrawer: ASDrawer( + child: Text('DRAWER'), + ), + body: ListView( + children: [ + Builder( + builder: (context) { + return TextButton( + onPressed: () { + Scaffold.of(context).openEndDrawer(); + }, + child: Text('open drawer'), + ); + }, + ) + ], + ), ); } } diff --git a/lib/ansu_ui.dart b/lib/ansu_ui.dart index c59dbd8..f90392d 100644 --- a/lib/ansu_ui.dart +++ b/lib/ansu_ui.dart @@ -3,7 +3,9 @@ library ansu_ui; export 'buttons/as_button.dart'; export 'scaffold/as_scaffold.dart'; export 'styles/as_colors.dart'; -export 'tabbar/as_tabbar.dart'; +export 'bar/as_tabbar.dart'; +export 'drawer/as_drawer.dart'; +export 'utils/screen_adapter.dart'; //`BOTTOM` is external lib export 'package:flutter_screenutil/flutter_screenutil.dart'; diff --git a/lib/tabbar/as_tab_indicator.dart b/lib/bar/as_tab_indicator.dart similarity index 100% rename from lib/tabbar/as_tab_indicator.dart rename to lib/bar/as_tab_indicator.dart diff --git a/lib/tabbar/as_tabbar.dart b/lib/bar/as_tabbar.dart similarity index 95% rename from lib/tabbar/as_tabbar.dart rename to lib/bar/as_tabbar.dart index f34f0b2..9da69d4 100644 --- a/lib/tabbar/as_tabbar.dart +++ b/lib/bar/as_tabbar.dart @@ -1,5 +1,5 @@ import 'package:ansu_ui/styles/as_colors.dart'; -import 'package:ansu_ui/tabbar/as_tab_indicator.dart'; +import 'package:ansu_ui/bar/as_tab_indicator.dart'; import 'package:flutter/material.dart'; /// ## 安速Tabbar diff --git a/lib/drawer/as_drawer.dart b/lib/drawer/as_drawer.dart new file mode 100644 index 0000000..cdb0f1b --- /dev/null +++ b/lib/drawer/as_drawer.dart @@ -0,0 +1,34 @@ +import 'package:ansu_ui/utils/screen_adapter.dart'; +import 'package:flutter/material.dart'; +import 'package:flutter_screenutil/flutter_screenutil.dart'; + +///安速抽屉 +class ASDrawer extends StatefulWidget { + ///子组件 + final Widget child; + ASDrawer({Key key, @required this.child}) : super(key: key); + + @override + _ASDrawerState createState() => _ASDrawerState(); +} + +class _ASDrawerState extends State { + @override + Widget build(BuildContext context) { + return Align( + alignment: Alignment.bottomRight, + child: SizedBox( + height: screenHeight - statusBarHeight, + width: screenWidth - 44.w, + child: Material( + shape: RoundedRectangleBorder( + borderRadius: BorderRadius.only( + topLeft: Radius.circular(34.w), + ), + ), + child: widget.child, + ), + ), + ); + } +} diff --git a/lib/scaffold/as_scaffold.dart b/lib/scaffold/as_scaffold.dart index 9c59ca2..2bca3e9 100644 --- a/lib/scaffold/as_scaffold.dart +++ b/lib/scaffold/as_scaffold.dart @@ -25,6 +25,11 @@ class ASScaffold extends StatefulWidget { /// `AppBar` appBarBottom final PreferredSizeWidget appBarBottom; + + /// `EndDrawer` endDrawer + /// + /// 右方向的抽屉 + final Widget endDrawer; ASScaffold({ Key key, @required this.title, @@ -32,6 +37,7 @@ class ASScaffold extends StatefulWidget { this.body, this.bottomNavigationBar, this.appBarBottom, + this.endDrawer, }) : super(key: key); @override @@ -42,6 +48,7 @@ class _ASScaffoldState extends State { @override Widget build(BuildContext context) { return Scaffold( + endDrawer: widget.endDrawer, backgroundColor: kBackgroundColor, bottomNavigationBar: widget.bottomNavigationBar, appBar: AppBar( diff --git a/lib/utils/screen_adapter.dart b/lib/utils/screen_adapter.dart new file mode 100644 index 0000000..8f91862 --- /dev/null +++ b/lib/utils/screen_adapter.dart @@ -0,0 +1,5 @@ +import 'package:ansu_ui/ansu_ui.dart'; + +double statusBarHeight = ScreenUtil().statusBarHeight; +double screenHeight = ScreenUtil().screenHeight; +double screenWidth = ScreenUtil().screenWidth;