From 1cafd9dac2d09f2eda41ded4f234230d207d483e Mon Sep 17 00:00:00 2001 From: laiiihz Date: Mon, 2 Nov 2020 11:37:36 +0800 Subject: [PATCH 01/10] =?UTF-8?q?=E5=AE=8C=E6=88=90=E7=99=BB=E9=99=86?= =?UTF-8?q?=E9=A1=B5=E9=9D=A2=E9=AA=8C=E8=AF=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- lib/ui/login/login_page.dart | 33 +++++++++++++++++++++++++++++--- pubspec.lock | 37 +++++++++++++++++++++++++++++++++++- pubspec.yaml | 2 ++ 3 files changed, 68 insertions(+), 4 deletions(-) diff --git a/lib/ui/login/login_page.dart b/lib/ui/login/login_page.dart index 5d7fad1..5a2dcab 100644 --- a/lib/ui/login/login_page.dart +++ b/lib/ui/login/login_page.dart @@ -5,6 +5,7 @@ import 'package:aku_community_manager/tools/widget_tool.dart'; import 'package:aku_community_manager/ui/widgets/common/aku_back_button.dart'; import 'package:aku_community_manager/ui/widgets/common/aku_scaffold.dart'; import 'package:aku_ui/common_widgets/aku_material_button.dart'; +import 'package:common_utils/common_utils.dart'; import 'package:extended_text/extended_text.dart'; import 'package:flutter/material.dart'; import 'package:aku_community_manager/tools/screen_tool.dart'; @@ -17,6 +18,18 @@ class LoginPage extends StatefulWidget { } class _LoginPageState extends State { + TextEditingController _textController = TextEditingController(); + + bool get phoneValid { + return RegexUtil.isMobileSimple(_textController.text); + } + + @override + void dispose() { + _textController?.dispose(); + super.dispose(); + } + @override Widget build(BuildContext context) { return AkuScaffold( @@ -54,6 +67,10 @@ class _LoginPageState extends State { width: double.infinity, child: TextField( autofocus: true, + controller: _textController, + onChanged: (text) { + setState(() {}); + }, keyboardType: TextInputType.phone, decoration: InputDecoration( border: UnderlineInputBorder( @@ -75,10 +92,20 @@ class _LoginPageState extends State { Padding( padding: EdgeInsets.symmetric(horizontal: 32.w), child: AkuMaterialButton( - color: AppStyle.minorColor, - onPressed: () {}, + color: AppStyle.primaryColor, + onPressed: phoneValid ? () {} : null, + nullColor: Color(0xFFFFE67D), radius: 8.w, - child: Text('获取验证码'), + child: Text( + '获取验证码', + style: TextStyle( + color: phoneValid + ? AppStyle.primaryTextColor + : AppStyle.minorTextColor, + fontSize: 32.sp, + fontWeight: FontWeight.bold, + ), + ), ), ), ], diff --git a/pubspec.lock b/pubspec.lock index 3ece33e..3018540 100644 --- a/pubspec.lock +++ b/pubspec.lock @@ -6,7 +6,7 @@ packages: description: path: "." ref: HEAD - resolved-ref: e57b6920e49f325c041fac955e1f3297dc9f1d09 + resolved-ref: "89d1e665c372461ed87be46c9227377b305050b2" url: "http://test.akuhotel.com:8099/aku_fe/aku_ui.git" source: git version: "0.0.1" @@ -66,6 +66,27 @@ packages: url: "https://pub.flutter-io.cn" source: hosted version: "1.15.0-nullsafety.3" + common_utils: + dependency: "direct main" + description: + name: common_utils + url: "https://pub.flutter-io.cn" + source: hosted + version: "1.2.1" + convert: + dependency: transitive + description: + name: convert + url: "https://pub.flutter-io.cn" + source: hosted + version: "2.1.1" + crypto: + dependency: transitive + description: + name: crypto + url: "https://pub.flutter-io.cn" + source: hosted + version: "2.1.5" cupertino_icons: dependency: "direct main" description: @@ -73,6 +94,13 @@ packages: url: "https://pub.flutter-io.cn" source: hosted version: "1.0.0" + decimal: + dependency: transitive + description: + name: decimal + url: "https://pub.flutter-io.cn" + source: hosted + version: "0.3.5" extended_text: dependency: "direct main" description: @@ -167,6 +195,13 @@ packages: url: "https://pub.flutter-io.cn" source: hosted version: "0.0.13" + rational: + dependency: transitive + description: + name: rational + url: "https://pub.flutter-io.cn" + source: hosted + version: "0.3.8" sky_engine: dependency: transitive description: flutter diff --git a/pubspec.yaml b/pubspec.yaml index 0248e80..92a0519 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -44,6 +44,8 @@ dependencies: extended_text: ^4.0.0 + common_utils: ^1.2.1 + aku_ui: git: url: http://test.akuhotel.com:8099/aku_fe/aku_ui.git From a868b352f1aced999bebbc6a0f036b79450ee1ed Mon Sep 17 00:00:00 2001 From: laiiihz Date: Mon, 2 Nov 2020 11:47:19 +0800 Subject: [PATCH 02/10] update homepage --- lib/ui/home/home_page.dart | 72 +++++++++++++++++++++----------------- 1 file changed, 40 insertions(+), 32 deletions(-) diff --git a/lib/ui/home/home_page.dart b/lib/ui/home/home_page.dart index 12dbc01..556021e 100644 --- a/lib/ui/home/home_page.dart +++ b/lib/ui/home/home_page.dart @@ -20,27 +20,31 @@ class HomePage extends StatefulWidget { //自定义bar的菜单按钮 Widget _menuButton(IconData iconData, String text, Widget page) { - return AkuButton( - height: 75.w + 8.w + 33.w, - onPressed: () { - Get.to(page); - }, - child: Column( - children: [ - Icon( - iconData, - size: 75.w, - ), - SizedBox(height: 8.w), - Text( - text, - style: TextStyle( - color: Color(0xFF4A4B51), - fontSize: 24.sp, - fontWeight: FontWeight.bold, + return Expanded( + child: AkuButton( + radius: 8.w, + height: 75.w + 8.w + 33.w, + onPressed: () { + Get.to(page); + }, + child: Column( + mainAxisAlignment: MainAxisAlignment.center, + children: [ + Icon( + iconData, + size: 75.w, ), - ) - ], + SizedBox(height: 8.w), + Text( + text, + style: TextStyle( + color: Color(0xFF4A4B51), + fontSize: 24.sp, + fontWeight: FontWeight.bold, + ), + ) + ], + ), ), ); } @@ -115,14 +119,14 @@ class _HomePageState extends State { width: 16.w, ), Container( - margin: EdgeInsets.only(top: 8.w, bottom: 8.w), - width: 72.w, - height: 72.w, - //头像按钮 - child: Builder(builder: (BuildContext context) { - return AkuRoundButton( - height: 72.w, - onPressed: () { + margin: EdgeInsets.only(top: 8.w, bottom: 8.w), + width: 72.w, + height: 72.w, + //头像按钮 + child: Builder( + builder: (BuildContext context) { + return GestureDetector( + onTap: () { Scaffold.of(context).openDrawer(); }, child: CircleAvatar( @@ -131,18 +135,20 @@ class _HomePageState extends State { child: userProvider.isSigned ? null : null, ), ); - })), + }, + ), + ), SizedBox(width: 16.w), Expanded( child: Container( margin: EdgeInsets.only(top: 8.w, bottom: 8.w), alignment: Alignment.center, height: 72.w, - padding: EdgeInsets.only(left: 21.w), child: AkuButton( //搜索框按钮 color: Color(0xFFFFFFFF), onPressed: () {}, + radius: 8.w, child: Row(children: [ Container( child: Column( @@ -237,10 +243,12 @@ class _HomePageState extends State { SizedBox(height: 16.w), Container( margin: EdgeInsets.only(left: 32.w, right: 32.w), - padding: EdgeInsets.only(top: 24.w), - color: Color(0xFFFFFFFF), width: double.infinity, height: 163.w, + decoration: BoxDecoration( + color: Color(0xFFFFFFFF), + borderRadius: BorderRadius.circular(8.w), + ), child: Row( mainAxisAlignment: MainAxisAlignment.spaceAround, children: [ From 4b500cf9582faaf2ff960327e6fa293adb23ef29 Mon Sep 17 00:00:00 2001 From: laiiihz Date: Mon, 2 Nov 2020 11:48:55 +0800 Subject: [PATCH 03/10] update gitignore --- .gitignore | 1 + 1 file changed, 1 insertion(+) diff --git a/.gitignore b/.gitignore index 9d532b1..48246c2 100644 --- a/.gitignore +++ b/.gitignore @@ -39,3 +39,4 @@ app.*.symbols # Obfuscation related app.*.map.json +resource.dart From 23be86de3ffe340a2c0e519f5b5361ac2d4a8f8e Mon Sep 17 00:00:00 2001 From: laiiihz Date: Mon, 2 Nov 2020 11:54:44 +0800 Subject: [PATCH 04/10] =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E5=9B=BE=E7=89=87?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 11 +---------- assets/home/ic_news.png | Bin 0 -> 1720 bytes assets/home/ic_scan.png | Bin 0 -> 1295 bytes assets/home/ic_search.png | Bin 0 -> 1696 bytes lib/ui/home/home_page.dart | 15 +++++++++------ pubspec.yaml | 3 +++ 6 files changed, 13 insertions(+), 16 deletions(-) create mode 100644 assets/home/ic_news.png create mode 100644 assets/home/ic_scan.png create mode 100644 assets/home/ic_search.png diff --git a/README.md b/README.md index 447971f..dac408b 100644 --- a/README.md +++ b/README.md @@ -4,13 +4,4 @@ A new Flutter application. ## Getting Started -This project is a starting point for a Flutter application. - -A few resources to get you started if this is your first Flutter project: - -- [Lab: Write your first Flutter app](https://flutter.dev/docs/get-started/codelab) -- [Cookbook: Useful Flutter samples](https://flutter.dev/docs/cookbook) - -For help getting started with Flutter, view our -[online documentation](https://flutter.dev/docs), which offers tutorials, -samples, guidance on mobile development, and a full API reference. +### 使用`fgen`生成图片 diff --git a/assets/home/ic_news.png b/assets/home/ic_news.png new file mode 100644 index 0000000000000000000000000000000000000000..2709f1266cab256abb58e517c12a21bed572d05b GIT binary patch literal 1720 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 literal 0 HcmV?d00001 diff --git a/lib/ui/home/home_page.dart b/lib/ui/home/home_page.dart index 556021e..5106ce3 100644 --- a/lib/ui/home/home_page.dart +++ b/lib/ui/home/home_page.dart @@ -1,3 +1,4 @@ +import 'package:aku_community_manager/const/resource.dart'; import 'package:aku_community_manager/provider/user_provider.dart'; import 'package:aku_community_manager/style/app_style.dart'; import 'package:aku_community_manager/tools/screen_tool.dart'; @@ -186,9 +187,10 @@ class _HomePageState extends State { Get.to(ScanPage()); }, child: Column(children: [ - Icon( - Icons.access_alarm, - size: 48.w, + Image.asset( + R.ASSETS_HOME_IC_SCAN_PNG, + height: 48.w, + width: 48.w, ), Text( '扫一扫', @@ -209,9 +211,10 @@ class _HomePageState extends State { height: double.infinity, onPressed: () {}, child: Column(children: [ - Icon( - Icons.access_time, - size: 48.w, + Image.asset( + R.ASSETS_HOME_IC_NEWS_PNG, + height: 48.w, + width: 48.w, ), Text( '消息', diff --git a/pubspec.yaml b/pubspec.yaml index 92a0519..7f7063b 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -63,6 +63,9 @@ flutter: # included with your application, so that you can use the icons in # the material Icons class. uses-material-design: true + assets: + - assets/ + - assets/home/ # To add assets to your application, add an assets section, like this: # assets: # - images/a_dot_burr.jpeg From bb1ba14b5d707f6416d8ffc7433115437fe9f955 Mon Sep 17 00:00:00 2001 From: laiiihz Date: Mon, 2 Nov 2020 11:59:31 +0800 Subject: [PATCH 05/10] add bebas font --- assets/fonts/BebasNeue-Regular.ttf | Bin 0 -> 57624 bytes lib/ui/home/home_page.dart | 5 ++++- pubspec.yaml | 10 ++++------ 3 files changed, 8 insertions(+), 7 deletions(-) create mode 100644 assets/fonts/BebasNeue-Regular.ttf diff --git a/assets/fonts/BebasNeue-Regular.ttf b/assets/fonts/BebasNeue-Regular.ttf new file mode 100644 index 0000000000000000000000000000000000000000..83a29bfc83b59227f3230f80d3a0e851969b869c GIT binary patch literal 57624 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 N885vUqCU*%KLJ@t7A*h( literal 0 HcmV?d00001 diff --git a/lib/ui/home/home_page.dart b/lib/ui/home/home_page.dart index 5106ce3..8d1958c 100644 --- a/lib/ui/home/home_page.dart +++ b/lib/ui/home/home_page.dart @@ -67,7 +67,10 @@ Widget _card(String number, String text, Color color) { Text( number, style: TextStyle( - color: color, fontSize: 40.sp, fontStyle: FontStyle.italic), + color: color, + fontSize: 40.sp, + fontFamily: 'Bebas', + ), ), SizedBox( height: 16.w, diff --git a/pubspec.yaml b/pubspec.yaml index 7f7063b..7fc92fd 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -79,12 +79,10 @@ flutter: # "family" key with the font family name, and a "fonts" key with a # list giving the asset and other descriptors for the font. For # example: - # fonts: - # - family: Schyler - # fonts: - # - asset: fonts/Schyler-Regular.ttf - # - asset: fonts/Schyler-Italic.ttf - # style: italic + fonts: + - family: Bebas + fonts: + - asset: assets/fonts/BebasNeue-Regular.ttf # - family: Trajan Pro # fonts: # - asset: fonts/TrajanPro.ttf From 66c81579b380fbd665e526ff550ab99ab7fbf799 Mon Sep 17 00:00:00 2001 From: laiiihz Date: Mon, 2 Nov 2020 13:43:16 +0800 Subject: [PATCH 06/10] =?UTF-8?q?=E5=AE=8C=E6=88=90=E7=99=BB=E9=99=86?= =?UTF-8?q?=E5=8A=9F=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- lib/ui/login/login_page.dart | 66 ++++++++++------ lib/ui/login/login_sms_page.dart | 126 +++++++++++++++++++++++++++++++ pubspec.lock | 7 ++ pubspec.yaml | 2 + 4 files changed, 178 insertions(+), 23 deletions(-) create mode 100644 lib/ui/login/login_sms_page.dart diff --git a/lib/ui/login/login_page.dart b/lib/ui/login/login_page.dart index 5a2dcab..5782e43 100644 --- a/lib/ui/login/login_page.dart +++ b/lib/ui/login/login_page.dart @@ -2,13 +2,16 @@ import 'dart:ui'; import 'package:aku_community_manager/style/app_style.dart'; import 'package:aku_community_manager/tools/widget_tool.dart'; +import 'package:aku_community_manager/ui/login/login_sms_page.dart'; import 'package:aku_community_manager/ui/widgets/common/aku_back_button.dart'; import 'package:aku_community_manager/ui/widgets/common/aku_scaffold.dart'; import 'package:aku_ui/common_widgets/aku_material_button.dart'; import 'package:common_utils/common_utils.dart'; import 'package:extended_text/extended_text.dart'; +import 'package:flutter/cupertino.dart'; import 'package:flutter/material.dart'; import 'package:aku_community_manager/tools/screen_tool.dart'; +import 'package:get/route_manager.dart'; class LoginPage extends StatefulWidget { LoginPage({Key key}) : super(key: key); @@ -24,6 +27,10 @@ class _LoginPageState extends State { return RegexUtil.isMobileSimple(_textController.text); } + bool get emptyText { + return TextUtil.isEmpty(_textController.text); + } + @override void dispose() { _textController?.dispose(); @@ -36,34 +43,28 @@ class _LoginPageState extends State { backgroundColor: Colors.white, leading: AkuBackButton.close(), body: ListView( + padding: EdgeInsets.symmetric( + vertical: 40.w, + horizontal: 32.w, + ), children: [ - Padding( - padding: EdgeInsets.only( - top: 40.w, - bottom: 184.w, - left: 32.w, - ), - child: Text( - '欢迎登录小蜜蜂', - style: TextStyle( - color: AppStyle.primaryTextColor, - fontWeight: FontWeight.bold, - fontSize: 48.sp, - ), + Text( + '欢迎登录小蜜蜂', + style: TextStyle( + color: AppStyle.primaryTextColor, + fontWeight: FontWeight.bold, + fontSize: 48.sp, ), ), - Padding( - padding: EdgeInsets.symmetric(horizontal: 32.w), - child: Text( - '手机号码', - style: TextStyle( - color: AppStyle.primaryTextColor, - fontSize: 24.sp, - ), + AkuBox.h(184), + Text( + '手机号码', + style: TextStyle( + color: AppStyle.primaryTextColor, + fontSize: 24.sp, ), ), Container( - padding: EdgeInsets.symmetric(horizontal: 32.w), width: double.infinity, child: TextField( autofocus: true, @@ -73,6 +74,23 @@ class _LoginPageState extends State { }, keyboardType: TextInputType.phone, decoration: InputDecoration( + suffixIconConstraints: BoxConstraints( + minHeight: 0, + minWidth: 0, + ), + suffixIcon: emptyText + ? SizedBox() + : GestureDetector( + onTap: () { + _textController.clear(); + setState(() {}); + }, + child: Icon( + CupertinoIcons.clear_circled_solid, + size: 30.w, + color: Color(0xFF999999), + ), + ), border: UnderlineInputBorder( borderSide: BorderSide( color: Color(0xFFE8E8E8), @@ -93,7 +111,9 @@ class _LoginPageState extends State { padding: EdgeInsets.symmetric(horizontal: 32.w), child: AkuMaterialButton( color: AppStyle.primaryColor, - onPressed: phoneValid ? () {} : null, + onPressed: phoneValid + ? () => Get.off(LoginSMSPage(phone: _textController.text)) + : null, nullColor: Color(0xFFFFE67D), radius: 8.w, child: Text( diff --git a/lib/ui/login/login_sms_page.dart b/lib/ui/login/login_sms_page.dart new file mode 100644 index 0000000..165ce0e --- /dev/null +++ b/lib/ui/login/login_sms_page.dart @@ -0,0 +1,126 @@ +import 'dart:async'; + +import 'package:aku_community_manager/provider/user_provider.dart'; +import 'package:aku_community_manager/style/app_style.dart'; +import 'package:aku_community_manager/tools/widget_tool.dart'; +import 'package:aku_community_manager/ui/home/home_page.dart'; +import 'package:aku_community_manager/ui/widgets/common/aku_back_button.dart'; +import 'package:aku_community_manager/ui/widgets/common/aku_scaffold.dart'; +import 'package:aku_ui/common_widgets/aku_material_button.dart'; +import 'package:flutter/material.dart'; +import 'package:aku_community_manager/tools/screen_tool.dart'; +import 'package:get/get.dart'; +import 'package:pin_input_text_field/pin_input_text_field.dart'; +import 'package:provider/provider.dart'; + +class LoginSMSPage extends StatefulWidget { + final String phone; + LoginSMSPage({Key key, this.phone}) : super(key: key); + + @override + _LoginSMSPageState createState() => _LoginSMSPageState(); +} + +class _LoginSMSPageState extends State { + TextEditingController _textEditingController = TextEditingController(); + int _count = 60; + Timer _countTimer; + bool get canResend => _count <= 0; + String get countString { + if (_count <= 0) + return ''; + else + return '$_count\s'; + } + + startTick() { + _count = 60; + _countTimer = Timer.periodic(Duration(seconds: 1), (timer) { + if (_count >= 0) + _count--; + else { + _countTimer?.cancel(); + } + setState(() {}); + }); + } + + @override + void initState() { + super.initState(); + startTick(); + } + + @override + void dispose() { + _textEditingController?.dispose(); + _countTimer?.cancel(); + super.dispose(); + } + + @override + Widget build(BuildContext context) { + return AkuScaffold( + backgroundColor: Colors.white, + leading: AkuBackButton(), + body: ListView( + padding: EdgeInsets.symmetric( + horizontal: 32.w, + vertical: 40.w, + ), + children: [ + Text( + '请输入短信验证码', + style: TextStyle( + color: AppStyle.primaryTextColor, + fontWeight: FontWeight.bold, + fontSize: 48.sp, + ), + ), + AkuBox.h(16), + Text( + '已向${widget.phone}发送了一个验证码', + style: TextStyle( + color: AppStyle.primaryTextColor, + fontSize: 24.sp, + ), + ), + AkuBox.h(160), + PinInputTextField( + controller: _textEditingController, + autoFocus: true, + decoration: UnderlineDecoration( + lineHeight: 1.w, + colorBuilder: FixedColorBuilder(Color(0xFFE8E8E8)), + ), + onChanged: (text) { + final userProvider = + Provider.of(context, listen: false); + if (text == '000000') { + userProvider.setisSigned(true); + Get.offAll(HomePage()); + } + }, + ), + AkuBox.h(40), + Row( + children: [ + AkuMaterialButton( + onPressed: canResend ? () => startTick() : null, + child: Text( + '重新发送 $countString', + style: TextStyle( + color: canResend + ? AppStyle.secondaryColor + : AppStyle.minorTextColor, + fontSize: 28.sp, + ), + ), + ), + ], + ), + ], + ), + ); + } +} diff --git a/pubspec.lock b/pubspec.lock index 3018540..bf7f680 100644 --- a/pubspec.lock +++ b/pubspec.lock @@ -181,6 +181,13 @@ packages: url: "https://pub.flutter-io.cn" source: hosted version: "1.8.0-nullsafety.1" + pin_input_text_field: + dependency: "direct main" + description: + name: pin_input_text_field + url: "https://pub.flutter-io.cn" + source: hosted + version: "3.1.1" provider: dependency: "direct main" description: diff --git a/pubspec.yaml b/pubspec.yaml index 7fc92fd..874766e 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -45,6 +45,8 @@ dependencies: extended_text: ^4.0.0 common_utils: ^1.2.1 + #验证码 + pin_input_text_field: ^3.1.1 aku_ui: git: From a20b53725bc15d55da4391d28a92bdf5b84717f2 Mon Sep 17 00:00:00 2001 From: laiiihz Date: Mon, 2 Nov 2020 14:03:39 +0800 Subject: [PATCH 07/10] =?UTF-8?q?=E6=B7=BB=E5=8A=A0application=20page?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../home/application/applications_page.dart | 57 +++++++++++++++++++ lib/ui/home/home_page.dart | 4 +- lib/ui/widgets/common/aku_scaffold.dart | 33 +++++------ 3 files changed, 77 insertions(+), 17 deletions(-) create mode 100644 lib/ui/home/application/applications_page.dart diff --git a/lib/ui/home/application/applications_page.dart b/lib/ui/home/application/applications_page.dart new file mode 100644 index 0000000..f1d3450 --- /dev/null +++ b/lib/ui/home/application/applications_page.dart @@ -0,0 +1,57 @@ +import 'package:aku_community_manager/const/resource.dart'; +import 'package:aku_community_manager/style/app_style.dart'; +import 'package:aku_community_manager/tools/widget_tool.dart'; +import 'package:aku_community_manager/ui/widgets/common/aku_back_button.dart'; +import 'package:aku_community_manager/ui/widgets/common/aku_scaffold.dart'; +import 'package:flutter/material.dart'; +import 'package:aku_community_manager/tools/screen_tool.dart'; + +class ApplicationPage extends StatefulWidget { + ApplicationPage({Key key}) : super(key: key); + + @override + _ApplicationPageState createState() => _ApplicationPageState(); +} + +class _ApplicationPageState extends State { + @override + Widget build(BuildContext context) { + return AkuScaffold( + appBar: AppBar( + elevation: 0, + backgroundColor: Colors.white, + leading: SizedBox( + width: 89.w, + child: AkuBackButton(), + ), + titleSpacing: 0, + title: Container( + margin: EdgeInsets.only(right: 37.w), + padding: EdgeInsets.symmetric(horizontal: 32.w), + height: 72.w, + child: Row( + children: [ + Image.asset( + R.ASSETS_HOME_IC_SEARCH_PNG, + height: 40.w, + width: 40.w, + ), + AkuBox.w(16), + Text( + '搜索应用', + style: TextStyle( + color: AppStyle.minorTextColor, + fontSize: 28.sp, + ), + ), + ], + ), + decoration: BoxDecoration( + color: Color(0xFFF9F9F9), + borderRadius: BorderRadius.circular(8.w), + ), + ), + ), + ); + } +} diff --git a/lib/ui/home/home_page.dart b/lib/ui/home/home_page.dart index 8d1958c..550f492 100644 --- a/lib/ui/home/home_page.dart +++ b/lib/ui/home/home_page.dart @@ -3,6 +3,7 @@ import 'package:aku_community_manager/provider/user_provider.dart'; import 'package:aku_community_manager/style/app_style.dart'; import 'package:aku_community_manager/tools/screen_tool.dart'; import 'package:aku_community_manager/tools/widget_tool.dart'; +import 'package:aku_community_manager/ui/home/application/applications_page.dart'; import 'package:aku_community_manager/ui/home/personal_draw.dart'; import 'package:aku_community_manager/ui/tool_pages/scan_page.dart'; import 'package:aku_ui/aku_ui.dart'; @@ -261,7 +262,8 @@ class _HomePageState extends State { _menuButton(Icons.wysiwyg, '一键报警', HomePage()), _menuButton(Icons.work, '访客管理', HomePage()), _menuButton(Icons.accessibility, '报事报修', HomePage()), - _menuButton(Icons.account_balance, '全部应用', HomePage()), + _menuButton( + Icons.account_balance, '全部应用', ApplicationPage()), ], ), ), diff --git a/lib/ui/widgets/common/aku_scaffold.dart b/lib/ui/widgets/common/aku_scaffold.dart index 613d514..9ab0f07 100644 --- a/lib/ui/widgets/common/aku_scaffold.dart +++ b/lib/ui/widgets/common/aku_scaffold.dart @@ -65,22 +65,23 @@ class _AkuScaffoldState extends State { Widget build(BuildContext context) { return Scaffold( backgroundColor: widget.backgroundColor, - appBar: AppBar( - backgroundColor: widget.appBarColor, - leading: widget.leading ?? AkuBackButton(), - brightness: widget.brightness, - elevation: 0, - centerTitle: true, - title: DefaultTextStyle( - style: widget.titleStyle ?? - TextStyle( - fontWeight: FontWeight.bold, - color: Color(0xFF333333), - fontSize: 36.sp, - ), - child: Text(widget.title ?? ''), - ), - ), + appBar: widget.appBar ?? + AppBar( + backgroundColor: widget.appBarColor, + leading: widget.leading ?? AkuBackButton(), + brightness: widget.brightness, + elevation: 0, + centerTitle: true, + title: DefaultTextStyle( + style: widget.titleStyle ?? + TextStyle( + fontWeight: FontWeight.bold, + color: Color(0xFF333333), + fontSize: 36.sp, + ), + child: Text(widget.title ?? ''), + ), + ), body: widget.body, bottomNavigationBar: widget.bottom, ); From 8e12d18437a09b7ca5ead24ef57d8d14be2045f8 Mon Sep 17 00:00:00 2001 From: laiiihz Date: Mon, 2 Nov 2020 14:13:46 +0800 Subject: [PATCH 08/10] fix home draw display --- assets/user/ic_kefu.png | Bin 0 -> 2240 bytes assets/user/ic_person.png | Bin 0 -> 1728 bytes assets/user/ic_setup.png | Bin 0 -> 2307 bytes lib/mock_models/users/user_info_model.dart | 4 + lib/provider/user_provider.dart | 8 + lib/ui/home/personal_draw.dart | 183 +++++++++++---------- pubspec.yaml | 1 + 7 files changed, 108 insertions(+), 88 deletions(-) create mode 100644 assets/user/ic_kefu.png create mode 100644 assets/user/ic_person.png create mode 100644 assets/user/ic_setup.png create mode 100644 lib/mock_models/users/user_info_model.dart diff --git a/assets/user/ic_kefu.png b/assets/user/ic_kefu.png new file mode 100644 index 0000000000000000000000000000000000000000..a53514a099a1bbf0f5c518385eb1b25ef525eccf GIT binary patch literal 2240 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 + + ///设置用户登陆 setisSigned (bool state){ _isSigned=state; notifyListeners(); } + + + } \ No newline at end of file diff --git a/lib/ui/home/personal_draw.dart b/lib/ui/home/personal_draw.dart index 3bb7a89..a8457af 100644 --- a/lib/ui/home/personal_draw.dart +++ b/lib/ui/home/personal_draw.dart @@ -1,3 +1,4 @@ +import 'package:aku_community_manager/const/resource.dart'; import 'package:aku_community_manager/provider/user_provider.dart'; import 'package:aku_community_manager/style/app_style.dart'; import 'package:aku_community_manager/ui/login/login_page.dart'; @@ -18,27 +19,30 @@ class PersonalDraw extends StatefulWidget { } class _PersonalDrawState extends State { - Widget _myListTile(IconData iconData, String text, {VoidCallback onPressed}) { + Widget _myListTile(String path, String text, {VoidCallback onPressed}) { return AkuButton( onPressed: onPressed, child: Container( - width: double.infinity, height: 96.w, - padding: EdgeInsets.only(left: 32.w, top: 28.w, bottom: 28.w), - child: Row(children: [ - Icon( - iconData, - size: 40.w, - ), - SizedBox(width: 16.w), - Text( - text, - style: TextStyle( - color: AppStyle.primaryTextColor, - fontSize: 28.sp, + padding: EdgeInsets.only(left: 32.w), + child: Row( + crossAxisAlignment: CrossAxisAlignment.center, + children: [ + Image.asset( + path, + width: 40.w, + height: 40.w, ), - ), - ]), + SizedBox(width: 16.w), + Text( + text, + style: TextStyle( + color: AppStyle.primaryTextColor, + fontSize: 28.sp, + ), + ), + ], + ), ), ); } @@ -46,83 +50,86 @@ class _PersonalDrawState extends State { @override Widget build(BuildContext context) { final userProvider = Provider.of(context); - return Drawer( - child: ListView( - children: [ - SizedBox( - height: 80.w - 40.w + ScreenUtil().statusBarHeight, - ), - //leading - Container( - margin: EdgeInsets.only(bottom: 80.w), - width: double.infinity, - child: Row( - children: [ - SizedBox(width: 32.w), - //头像按钮 - AkuRoundButton( - height: 72.w, - onPressed: () {}, - child: CircleAvatar( - radius: 36.w, - backgroundColor: Colors.grey, - child: userProvider.isSigned ? null : null, + return SizedBox( + width: 465.w, + child: Drawer( + child: ListView( + children: [ + SizedBox( + height: 80.w - 40.w + ScreenUtil().statusBarHeight, + ), + //leading + Container( + margin: EdgeInsets.only(bottom: 80.w), + width: double.infinity, + child: Row( + children: [ + SizedBox(width: 32.w), + //头像按钮 + AkuRoundButton( + height: 72.w, + onPressed: () {}, + child: CircleAvatar( + radius: 36.w, + backgroundColor: Colors.grey, + child: userProvider.isSigned ? null : null, + ), ), - ), - SizedBox(width: 24.w), - Column( - crossAxisAlignment: CrossAxisAlignment.start, - children: [ - //登录按钮 - InkWell( - onTap: () {}, - child: userProvider.isSigned - ? Text( - '李大海', - style: TextStyle( - color: AppStyle.primaryTextColor, - fontSize: 28.sp, - fontWeight: FontWeight.bold), - ) - : Text('登录', + SizedBox(width: 24.w), + Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + //登录按钮 + InkWell( + onTap: () {}, + child: userProvider.isSigned + ? Text( + '李大海', + style: TextStyle( + color: AppStyle.primaryTextColor, + fontSize: 28.sp, + fontWeight: FontWeight.bold), + ) + : Text('登录', + style: TextStyle( + color: AppStyle.primaryTextColor, + fontSize: 28.sp, + fontWeight: FontWeight.bold)), + ), + InkWell( + onTap: () {}, + child: Row( + children: [ + Icon(Icons.location_on_outlined, size: 33.w), + Text( + '深圳华悦茂峰', style: TextStyle( color: AppStyle.primaryTextColor, - fontSize: 28.sp, - fontWeight: FontWeight.bold)), - ), - InkWell( - onTap: () {}, - child: Row( - children: [ - Icon(Icons.location_on_outlined, size: 33.w), - Text( - '深圳华悦茂峰', - style: TextStyle( - color: AppStyle.primaryTextColor, - fontSize: 24.sp), - ), - ], + fontSize: 24.sp), + ), + ], + ), ), - ), - ], - ), - ], + ], + ), + ], + ), + ), + _myListTile( + R.ASSETS_USER_IC_PERSON_PNG, + '个人信息', + onPressed: () { + userProvider.isSigned + ? Get.to(UserInfoPage()) + : Get.to(LoginPage()); + }, ), - ), - _myListTile( - Icons.contact_page, - '个人信息', - onPressed: () { - userProvider.isSigned - ? Get.to(UserInfoPage()) - : Get.to(LoginPage()); - }, - ), - _myListTile(Icons.supervised_user_circle, '联系客服'), - _myListTile(Icons.settings, '设置', onPressed: () { - Get.to(SettingsPage()); - }), - ], + _myListTile(R.ASSETS_USER_IC_KEFU_PNG, '联系客服'), + _myListTile(R.ASSETS_USER_IC_SETUP_PNG, '设置', onPressed: () { + Get.to(SettingsPage()); + }), + ], + ), ), ); } diff --git a/pubspec.yaml b/pubspec.yaml index 874766e..d441c23 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -68,6 +68,7 @@ flutter: assets: - assets/ - assets/home/ + - assets/user/ # To add assets to your application, add an assets section, like this: # assets: # - images/a_dot_burr.jpeg From 4529e842296071b47aaebf45a86fe2fd62be83f5 Mon Sep 17 00:00:00 2001 From: laiiihz Date: Mon, 2 Nov 2020 14:17:48 +0800 Subject: [PATCH 09/10] =?UTF-8?q?=E9=A6=96=E9=A1=B5=E5=BA=95=E9=83=A8?= =?UTF-8?q?=E6=8C=89=E9=92=AE=E6=B7=BB=E5=8A=A0=E5=9C=86=E8=A7=92?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- lib/ui/home/home_page.dart | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/lib/ui/home/home_page.dart b/lib/ui/home/home_page.dart index 550f492..428e7fd 100644 --- a/lib/ui/home/home_page.dart +++ b/lib/ui/home/home_page.dart @@ -54,6 +54,7 @@ Widget _menuButton(IconData iconData, String text, Widget page) { //底部信息栏卡片 Widget _card(String number, String text, Color color) { return AkuButton( + radius: 8.w, onPressed: () {}, color: Color(0xFFFFFFFF), child: Container( @@ -372,7 +373,10 @@ class _HomePageState extends State { //底部信息栏 Container( width: double.infinity, - // height: 333.w, + decoration: BoxDecoration( + borderRadius: BorderRadius.circular(8.w), + color: Colors.white, + ), child: Column( children: [ Row( From ac2679f4fd17ca4ca8643ef604d1a7f96a428309 Mon Sep 17 00:00:00 2001 From: laiiihz Date: Mon, 2 Nov 2020 14:30:37 +0800 Subject: [PATCH 10/10] update app brightness --- .../home/application/applications_page.dart | 4 + lib/ui/home/home_page.dart | 683 +++++++++--------- 2 files changed, 352 insertions(+), 335 deletions(-) diff --git a/lib/ui/home/application/applications_page.dart b/lib/ui/home/application/applications_page.dart index f1d3450..63a8fc3 100644 --- a/lib/ui/home/application/applications_page.dart +++ b/lib/ui/home/application/applications_page.dart @@ -18,6 +18,7 @@ class _ApplicationPageState extends State { Widget build(BuildContext context) { return AkuScaffold( appBar: AppBar( + brightness: Brightness.light, elevation: 0, backgroundColor: Colors.white, leading: SizedBox( @@ -52,6 +53,9 @@ class _ApplicationPageState extends State { ), ), ), + body: Column( + children: [], + ), ); } } diff --git a/lib/ui/home/home_page.dart b/lib/ui/home/home_page.dart index 428e7fd..cf3c068 100644 --- a/lib/ui/home/home_page.dart +++ b/lib/ui/home/home_page.dart @@ -9,6 +9,7 @@ import 'package:aku_community_manager/ui/tool_pages/scan_page.dart'; import 'package:aku_ui/aku_ui.dart'; import 'package:aku_ui/common_widgets/aku_material_button.dart'; import 'package:flutter/material.dart'; +import 'package:flutter/services.dart'; import 'package:flutter_screenutil/flutter_screenutil.dart'; import 'package:get/get.dart'; import 'package:provider/provider.dart'; @@ -20,390 +21,402 @@ class HomePage extends StatefulWidget { _HomePageState createState() => _HomePageState(); } -//自定义bar的菜单按钮 -Widget _menuButton(IconData iconData, String text, Widget page) { - return Expanded( - child: AkuButton( - radius: 8.w, - height: 75.w + 8.w + 33.w, - onPressed: () { - Get.to(page); - }, - child: Column( - mainAxisAlignment: MainAxisAlignment.center, - children: [ - Icon( - iconData, - size: 75.w, - ), - SizedBox(height: 8.w), - Text( - text, - style: TextStyle( - color: Color(0xFF4A4B51), - fontSize: 24.sp, - fontWeight: FontWeight.bold, - ), - ) - ], - ), - ), - ); -} - -//底部信息栏卡片 -Widget _card(String number, String text, Color color) { - return AkuButton( - radius: 8.w, - onPressed: () {}, - color: Color(0xFFFFFFFF), - child: Container( - width: 342.5.w, - height: 166.w, - alignment: Alignment.center, +class _HomePageState extends State { + //自定义bar的菜单按钮 + Widget _menuButton(IconData iconData, String text, Widget page) { + return Expanded( + child: AkuButton( + radius: 8.w, + height: 75.w + 8.w + 33.w, + onPressed: () { + Get.to(page); + }, child: Column( + mainAxisAlignment: MainAxisAlignment.center, children: [ - SizedBox( - height: 32.w, + Icon( + iconData, + size: 75.w, ), + SizedBox(height: 8.w), Text( - number, + text, style: TextStyle( - color: color, - fontSize: 40.sp, - fontFamily: 'Bebas', + color: Color(0xFF4A4B51), + fontSize: 24.sp, + fontWeight: FontWeight.bold, ), - ), - SizedBox( - height: 16.w, - ), - Text(text, - style: TextStyle( - color: AppStyle.minorTextColor, - fontSize: 24.sp, - fontWeight: FontWeight.bold)), - Spacer(), + ) ], - )), - ); -} + ), + ), + ); + } + +//底部信息栏卡片 + Widget _card(String number, String text, Color color) { + return AkuButton( + radius: 8.w, + onPressed: () {}, + color: Color(0xFFFFFFFF), + child: Container( + width: 342.5.w, + height: 166.w, + alignment: Alignment.center, + child: Column( + children: [ + SizedBox( + height: 32.w, + ), + Text( + number, + style: TextStyle( + color: color, + fontSize: 40.sp, + fontFamily: 'Bebas', + ), + ), + SizedBox( + height: 16.w, + ), + Text(text, + style: TextStyle( + color: AppStyle.minorTextColor, + fontSize: 24.sp, + fontWeight: FontWeight.bold)), + Spacer(), + ], + )), + ); + } + + @override + void initState() { + super.initState(); + SystemChrome.setSystemUIOverlayStyle(SystemUiOverlayStyle( + statusBarColor: Colors.transparent, + )); + } -class _HomePageState extends State { @override Widget build(BuildContext context) { final userProvider = Provider.of(context); ScreenUtil.init(context, designSize: Size(750, 1334), allowFontScaling: true); - return Scaffold( - drawer: PersonalDraw(), - backgroundColor: Color(0xFFF9F9F9), - //自定义bar - appBar: PreferredSize( - preferredSize: Size(375.w, 430.w - 40.w + statusBarHeight), - child: Container( - height: 430.w - 40.w + ScreenUtil().statusBarHeight, - width: double.infinity, - decoration: BoxDecoration( - gradient: LinearGradient( - begin: Alignment.topCenter, - end: Alignment.bottomCenter, - colors: [ - Color(0xFFFFDC6F), - Color(0xFFFFC40C), - ], + return AnnotatedRegion( + child: Scaffold( + drawer: PersonalDraw(), + backgroundColor: Color(0xFFF9F9F9), + //自定义bar + appBar: PreferredSize( + preferredSize: Size(375.w, 430.w - 40.w + statusBarHeight), + child: Container( + height: 430.w - 40.w + ScreenUtil().statusBarHeight, + width: double.infinity, + decoration: BoxDecoration( + gradient: LinearGradient( + begin: Alignment.topCenter, + end: Alignment.bottomCenter, + colors: [ + Color(0xFFFFDC6F), + Color(0xFFFFC40C), + ], + ), + borderRadius: + BorderRadius.only(bottomRight: Radius.circular(32.w)), ), - borderRadius: BorderRadius.only(bottomRight: Radius.circular(32.w)), - ), - child: Column( - crossAxisAlignment: CrossAxisAlignment.start, - children: [ - SizedBox(height: ScreenUtil().statusBarHeight), - Container( - height: 88.w, - child: Row(children: [ - SizedBox( - width: 16.w, - ), - Container( - margin: EdgeInsets.only(top: 8.w, bottom: 8.w), - width: 72.w, - height: 72.w, - //头像按钮 - child: Builder( - builder: (BuildContext context) { - return GestureDetector( - onTap: () { - Scaffold.of(context).openDrawer(); - }, - child: CircleAvatar( - radius: 36.w, - backgroundColor: Colors.grey, - child: userProvider.isSigned ? null : null, - ), - ); - }, + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + SizedBox(height: ScreenUtil().statusBarHeight), + Container( + height: 88.w, + child: Row(children: [ + SizedBox( + width: 16.w, ), - ), - SizedBox(width: 16.w), - Expanded( - child: Container( + Container( margin: EdgeInsets.only(top: 8.w, bottom: 8.w), - alignment: Alignment.center, + width: 72.w, height: 72.w, - child: AkuButton( - //搜索框按钮 - color: Color(0xFFFFFFFF), - onPressed: () {}, - radius: 8.w, - child: Row(children: [ - Container( - child: Column( - children: [ - SizedBox(height: 18.w), - Icon( - Icons.zoom_in_sharp, - size: 38.w, - ), - ], + //头像按钮 + child: Builder( + builder: (BuildContext context) { + return GestureDetector( + onTap: () { + Scaffold.of(context).openDrawer(); + }, + child: CircleAvatar( + radius: 36.w, + backgroundColor: Colors.grey, + child: userProvider.isSigned ? null : null, ), + ); + }, + ), + ), + SizedBox(width: 16.w), + Expanded( + child: Container( + margin: EdgeInsets.only(top: 8.w, bottom: 8.w), + alignment: Alignment.center, + height: 72.w, + child: AkuButton( + //搜索框按钮 + color: Color(0xFFFFFFFF), + onPressed: () {}, + radius: 8.w, + child: Row(children: [ + Container( + child: Column( + children: [ + SizedBox(height: 18.w), + Icon( + Icons.zoom_in_sharp, + size: 38.w, + ), + ], + ), + ), + SizedBox(width: 19.w), + Text( + '搜索工单订单号、手机', + style: TextStyle( + color: AppStyle.minorTextColor, + fontSize: 28.sp, + ), + ), + ]), + ), + ), + ), + SizedBox(width: 15.w), + Container( + margin: EdgeInsets.only(top: 5.w, bottom: 5.w), + child: MaterialButton( + materialTapTargetSize: MaterialTapTargetSize.shrinkWrap, + //扫一扫按钮 + height: double.infinity, + minWidth: 78.w, + padding: EdgeInsets.zero, + onPressed: () { + Get.to(ScanPage()); + }, + child: Column(children: [ + Image.asset( + R.ASSETS_HOME_IC_SCAN_PNG, + height: 48.w, + width: 48.w, ), - SizedBox(width: 19.w), Text( - '搜索工单订单号、手机', + '扫一扫', style: TextStyle( - color: AppStyle.minorTextColor, - fontSize: 28.sp, + color: AppStyle.primaryTextColor, + fontSize: 20.sp, + fontWeight: FontWeight.normal, ), ), ]), ), ), - ), - SizedBox(width: 15.w), - Container( - margin: EdgeInsets.only(top: 5.w, bottom: 5.w), - child: MaterialButton( - materialTapTargetSize: MaterialTapTargetSize.shrinkWrap, - //扫一扫按钮 - height: double.infinity, - minWidth: 78.w, - padding: EdgeInsets.zero, - onPressed: () { - Get.to(ScanPage()); - }, - child: Column(children: [ - Image.asset( - R.ASSETS_HOME_IC_SCAN_PNG, - height: 48.w, - width: 48.w, - ), - Text( - '扫一扫', - style: TextStyle( - color: AppStyle.primaryTextColor, - fontSize: 20.sp, - fontWeight: FontWeight.normal, + Container( + margin: EdgeInsets.only(top: 5.w, bottom: 5.w), + child: AkuMaterialButton( + minWidth: 78.w, + //消息按钮 + height: double.infinity, + onPressed: () {}, + child: Column(children: [ + Image.asset( + R.ASSETS_HOME_IC_NEWS_PNG, + height: 48.w, + width: 48.w, ), - ), - ]), - ), - ), - Container( - margin: EdgeInsets.only(top: 5.w, bottom: 5.w), - child: AkuMaterialButton( - minWidth: 78.w, - //消息按钮 - height: double.infinity, - onPressed: () {}, - child: Column(children: [ - Image.asset( - R.ASSETS_HOME_IC_NEWS_PNG, - height: 48.w, - width: 48.w, - ), - Text( - '消息', - style: TextStyle( - color: AppStyle.primaryTextColor, - fontSize: 20.sp, + Text( + '消息', + style: TextStyle( + color: AppStyle.primaryTextColor, + fontSize: 20.sp, + ), ), - ), - ]), + ]), + ), ), - ), - SizedBox(width: 17.w), - ]), - ), - SizedBox(height: 24.w), - Container( - margin: EdgeInsets.only( - left: 32.w, - ), - height: 67.w, - child: Text( - 'HI,李大海', - style: TextStyle( - color: AppStyle.primaryTextColor, - fontWeight: FontWeight.bold, - fontSize: 48.sp), + SizedBox(width: 17.w), + ]), ), - ), - SizedBox(height: 16.w), - Container( - margin: EdgeInsets.only(left: 32.w, right: 32.w), - width: double.infinity, - height: 163.w, - decoration: BoxDecoration( - color: Color(0xFFFFFFFF), - borderRadius: BorderRadius.circular(8.w), - ), - child: Row( - mainAxisAlignment: MainAxisAlignment.spaceAround, - children: [ - _menuButton(Icons.wysiwyg, '一键报警', HomePage()), - _menuButton(Icons.work, '访客管理', HomePage()), - _menuButton(Icons.accessibility, '报事报修', HomePage()), - _menuButton( - Icons.account_balance, '全部应用', ApplicationPage()), - ], - ), - ), - ], - ), - ), - ), - body: ListView( - padding: EdgeInsets.all(32.w), - children: [ - Container( - //公告标题行 - width: double.infinity, - height: 45.w, - child: Row( - mainAxisAlignment: MainAxisAlignment.center, - children: [ - Text( - '今日公告', - style: TextStyle( - color: Color(0xFF4A4B51), - fontSize: 32.sp, - fontWeight: FontWeight.bold, + SizedBox(height: 24.w), + Container( + margin: EdgeInsets.only( + left: 32.w, + ), + height: 67.w, + child: Text( + 'HI,李大海', + style: TextStyle( + color: AppStyle.primaryTextColor, + fontWeight: FontWeight.bold, + fontSize: 48.sp), ), ), - Spacer(), - AkuButton( - //全部公告按钮 - onPressed: () {}, + SizedBox(height: 16.w), + Container( + margin: EdgeInsets.only(left: 32.w, right: 32.w), + width: double.infinity, + height: 163.w, + decoration: BoxDecoration( + color: Color(0xFFFFFFFF), + borderRadius: BorderRadius.circular(8.w), + ), child: Row( + mainAxisAlignment: MainAxisAlignment.spaceAround, children: [ - Text( - '全部公告', - style: TextStyle( - color: AppStyle.minorTextColor, - fontSize: 24.sp, - fontWeight: FontWeight.bold, - ), - ), - Icon( - Icons.arrow_forward_ios, - size: 22.w, - color: AppStyle.minorTextColor, - ) + _menuButton(Icons.wysiwyg, '一键报警', HomePage()), + _menuButton(Icons.work, '访客管理', HomePage()), + _menuButton(Icons.accessibility, '报事报修', HomePage()), + _menuButton( + Icons.account_balance, '全部应用', ApplicationPage()), ], ), ), ], ), ), - SizedBox(height: 16.w), - //公告栏 - Container( - color: Color(0xFFFFFFFF), - //公告栏 - width: double.infinity, - height: 172.w, - //TODO listview - ), - SizedBox(height: 32.w), - //待办事项标题行 - Container( - width: double.infinity, - height: 45.w, - child: Row( - children: [ - Text( - '待办事项', - style: TextStyle( - color: Color(0xFF4A4B51), - fontSize: 32.sp, - fontWeight: FontWeight.bold, + ), + body: ListView( + padding: EdgeInsets.all(32.w), + children: [ + Container( + //公告标题行 + width: double.infinity, + height: 45.w, + child: Row( + mainAxisAlignment: MainAxisAlignment.center, + children: [ + Text( + '今日公告', + style: TextStyle( + color: Color(0xFF4A4B51), + fontSize: 32.sp, + fontWeight: FontWeight.bold, + ), ), - ), - Spacer(), - AkuButton( - onPressed: () {}, - child: Row( - children: [ - Text( - '全部事项', - style: TextStyle( + Spacer(), + AkuButton( + //全部公告按钮 + onPressed: () {}, + child: Row( + children: [ + Text( + '全部公告', + style: TextStyle( color: AppStyle.minorTextColor, fontSize: 24.sp, - fontWeight: FontWeight.bold), - ), - Icon( - Icons.arrow_forward_ios, - size: 22.w, - color: AppStyle.minorTextColor, - ), - ], + fontWeight: FontWeight.bold, + ), + ), + Icon( + Icons.arrow_forward_ios, + size: 22.w, + color: AppStyle.minorTextColor, + ) + ], + ), ), - ), - ], + ], + ), ), - ), - SizedBox(height: 16.w), - //待办事项栏 - Container( - width: double.infinity, - height: 449.w, - //TODO listview - ), - SizedBox(height: 24.w), - //底部信息栏 - Container( - width: double.infinity, - decoration: BoxDecoration( - borderRadius: BorderRadius.circular(8.w), - color: Colors.white, + SizedBox(height: 16.w), + //公告栏 + Container( + color: Color(0xFFFFFFFF), + //公告栏 + width: double.infinity, + height: 172.w, + //TODO listview ), - child: Column( - children: [ - Row( - children: [ - _card('25', '未处理事项', Color(0xFFFF4E0D)), - AkuDiveder().verticalDivider(166.5.w), - _card('22', '处理中事项', Color(0xFFFFC40C)), - ], - ), - Row(children: [ - AkuDiveder().horizontalDivider(343.w), - AkuDiveder(isReverse: true).horizontalDivider(343.w) - ]), - Row( - children: [ - _card('25', '已处理事项', Color(0xFF3F8FFE)), - AkuDiveder(isReverse: true).verticalDivider( - 166.5.w, + SizedBox(height: 32.w), + //待办事项标题行 + Container( + width: double.infinity, + height: 45.w, + child: Row( + children: [ + Text( + '待办事项', + style: TextStyle( + color: Color(0xFF4A4B51), + fontSize: 32.sp, + fontWeight: FontWeight.bold, ), - _card('72', '全部事项', Color(0xFF333333)), - ], - ), - ], + ), + Spacer(), + AkuButton( + onPressed: () {}, + child: Row( + children: [ + Text( + '全部事项', + style: TextStyle( + color: AppStyle.minorTextColor, + fontSize: 24.sp, + fontWeight: FontWeight.bold), + ), + Icon( + Icons.arrow_forward_ios, + size: 22.w, + color: AppStyle.minorTextColor, + ), + ], + ), + ), + ], + ), ), - ), - ], + SizedBox(height: 16.w), + //待办事项栏 + Container( + width: double.infinity, + height: 449.w, + //TODO listview + ), + SizedBox(height: 24.w), + //底部信息栏 + Container( + width: double.infinity, + decoration: BoxDecoration( + borderRadius: BorderRadius.circular(8.w), + color: Colors.white, + ), + child: Column( + children: [ + Row( + children: [ + _card('25', '未处理事项', Color(0xFFFF4E0D)), + AkuDiveder().verticalDivider(166.5.w), + _card('22', '处理中事项', Color(0xFFFFC40C)), + ], + ), + Row(children: [ + AkuDiveder().horizontalDivider(343.w), + AkuDiveder(isReverse: true).horizontalDivider(343.w) + ]), + Row( + children: [ + _card('25', '已处理事项', Color(0xFF3F8FFE)), + AkuDiveder(isReverse: true).verticalDivider( + 166.5.w, + ), + _card('72', '全部事项', Color(0xFF333333)), + ], + ), + ], + ), + ), + ], + ), ), + value: SystemUiOverlayStyle.dark, ); } }