From a30eecbdbb45d46b4e533025ae19b8fe1baed715 Mon Sep 17 00:00:00 2001 From: laiiihz Date: Mon, 2 Nov 2020 11:15:16 +0800 Subject: [PATCH] add login page --- lib/tools/widget_tool.dart | 24 +++++- lib/ui/home/personal_draw.dart | 5 +- lib/ui/login/login_page.dart | 91 ++++++++++++++++++++++ lib/ui/widgets/common/aku_back_button.dart | 10 ++- lib/ui/widgets/common/aku_scaffold.dart | 7 +- pubspec.lock | 16 +++- pubspec.yaml | 2 + 7 files changed, 146 insertions(+), 9 deletions(-) create mode 100644 lib/ui/login/login_page.dart diff --git a/lib/tools/widget_tool.dart b/lib/tools/widget_tool.dart index 55daaca..7ed578a 100644 --- a/lib/tools/widget_tool.dart +++ b/lib/tools/widget_tool.dart @@ -1,9 +1,10 @@ import 'package:flutter/material.dart'; import 'package:flutter_screenutil/flutter_screenutil.dart'; -//自定义分割线 -class AkuDiveder { - final bool isReverse;//颜色方向反转 - const AkuDiveder({Key key,this.isReverse=false}); + +///自定义分割线 +class AkuDiveder { + final bool isReverse; //颜色方向反转 + const AkuDiveder({Key key, this.isReverse = false}); Widget verticalDivider(double height) { return Container( width: 1.w, @@ -23,6 +24,7 @@ class AkuDiveder { ])), ); } + Widget horizontalDivider(double width) { return Container( width: width, @@ -43,3 +45,17 @@ class AkuDiveder { ); } } + +class AkuBox { + static h(double height) { + return SizedBox( + height: height.w, + ); + } + + static w(double width) { + return SizedBox( + width: width.w, + ); + } +} diff --git a/lib/ui/home/personal_draw.dart b/lib/ui/home/personal_draw.dart index b60492c..3bb7a89 100644 --- a/lib/ui/home/personal_draw.dart +++ b/lib/ui/home/personal_draw.dart @@ -1,5 +1,6 @@ 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'; import 'package:aku_community_manager/ui/settings/settings_page.dart'; import 'package:aku_community_manager/ui/settings/user_info_page.dart'; import 'package:aku_ui/common_widgets/aku_button.dart'; @@ -112,7 +113,9 @@ class _PersonalDrawState extends State { Icons.contact_page, '个人信息', onPressed: () { - Get.to(UserInfoPage()); + userProvider.isSigned + ? Get.to(UserInfoPage()) + : Get.to(LoginPage()); }, ), _myListTile(Icons.supervised_user_circle, '联系客服'), diff --git a/lib/ui/login/login_page.dart b/lib/ui/login/login_page.dart new file mode 100644 index 0000000..f39108a --- /dev/null +++ b/lib/ui/login/login_page.dart @@ -0,0 +1,91 @@ +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/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'; + +class LoginPage extends StatefulWidget { + LoginPage({Key key}) : super(key: key); + + @override + _LoginPageState createState() => _LoginPageState(); +} + +class _LoginPageState extends State { + @override + Widget build(BuildContext context) { + return AkuScaffold( + backgroundColor: Colors.white, + leading: AkuBackButton.close(), + body: ListView( + 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, + ), + ), + ), + Padding( + padding: EdgeInsets.symmetric(horizontal: 32.w), + child: Text( + '手机号码', + style: TextStyle( + color: AppStyle.primaryTextColor, + fontSize: 24.sp, + ), + ), + ), + Container( + padding: EdgeInsets.symmetric(horizontal: 32.w), + width: double.infinity, + child: TextField( + autofocus: true, + keyboardType: TextInputType.phone, + decoration: InputDecoration( + border: UnderlineInputBorder( + borderSide: BorderSide( + color: Color(0xFFE8E8E8), + width: 1.w, + ), + ), + focusedBorder: UnderlineInputBorder( + borderSide: BorderSide( + color: Color(0xFFE8E8E8), + width: 2.w, + ), + ), + ), + ), + ), + AkuBox.h(80), + Padding( + padding: EdgeInsets.symmetric(horizontal: 32.w), + child: AkuMaterialButton( + color: AppStyle.minorColor, + onPressed: () {}, + radius: 8.w, + child: Text('获取验证码'), + ), + ), + ], + ), + bottom: Container( + padding: EdgeInsets.all(40), + child: Text(''), + ), + ); + } +} diff --git a/lib/ui/widgets/common/aku_back_button.dart b/lib/ui/widgets/common/aku_back_button.dart index e3c49e9..71ddd6e 100644 --- a/lib/ui/widgets/common/aku_back_button.dart +++ b/lib/ui/widgets/common/aku_back_button.dart @@ -3,9 +3,17 @@ import 'package:aku_community_manager/tools/screen_tool.dart'; class AkuBackButton extends StatefulWidget { final Brightness brightness; + final IconData icon; AkuBackButton({ Key key, this.brightness = Brightness.light, + this.icon = Icons.arrow_back_ios, + }) : super(key: key); + + AkuBackButton.close({ + Key key, + this.brightness = Brightness.light, + this.icon = Icons.clear, }) : super(key: key); @override @@ -18,7 +26,7 @@ class _AkuBackButtonState extends State { return Navigator.canPop(context) ? IconButton( icon: Icon( - Icons.arrow_back_ios, + widget.icon, size: 32.w, color: widget.brightness == Brightness.light ? Color(0xFF333333) diff --git a/lib/ui/widgets/common/aku_scaffold.dart b/lib/ui/widgets/common/aku_scaffold.dart index 62445a4..613d514 100644 --- a/lib/ui/widgets/common/aku_scaffold.dart +++ b/lib/ui/widgets/common/aku_scaffold.dart @@ -41,6 +41,8 @@ class AkuScaffold extends StatefulWidget { /// ///默认`0xFFF9F9F9` final Color backgroundColor; + + final Color appBarColor; AkuScaffold({ Key key, this.appBar, @@ -51,6 +53,7 @@ class AkuScaffold extends StatefulWidget { this.body, this.backgroundColor = const Color(0XFFF9F9F9), this.bottom, + this.appBarColor = Colors.white, }) : super(key: key); @override @@ -63,7 +66,7 @@ class _AkuScaffoldState extends State { return Scaffold( backgroundColor: widget.backgroundColor, appBar: AppBar( - backgroundColor: Colors.white, + backgroundColor: widget.appBarColor, leading: widget.leading ?? AkuBackButton(), brightness: widget.brightness, elevation: 0, @@ -75,7 +78,7 @@ class _AkuScaffoldState extends State { color: Color(0xFF333333), fontSize: 36.sp, ), - child: Text(widget.title), + child: Text(widget.title ?? ''), ), ), body: widget.body, diff --git a/pubspec.lock b/pubspec.lock index 9013723..3ece33e 100644 --- a/pubspec.lock +++ b/pubspec.lock @@ -73,6 +73,20 @@ packages: url: "https://pub.flutter-io.cn" source: hosted version: "1.0.0" + extended_text: + dependency: "direct main" + description: + name: extended_text + url: "https://pub.flutter-io.cn" + source: hosted + version: "4.0.0" + extended_text_library: + dependency: transitive + description: + name: extended_text_library + url: "https://pub.flutter-io.cn" + source: hosted + version: "4.0.1" fake_async: dependency: transitive description: @@ -216,4 +230,4 @@ packages: version: "2.1.0-nullsafety.3" sdks: dart: ">=2.10.0 <2.11.0" - flutter: ">=1.17.0 <2.0.0" + flutter: ">=1.20.0 <2.0.0" diff --git a/pubspec.yaml b/pubspec.yaml index 5db18a1..0248e80 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -42,6 +42,8 @@ dependencies: #toast bot_toast: ^3.0.4 + extended_text: ^4.0.0 + aku_ui: git: url: http://test.akuhotel.com:8099/aku_fe/aku_ui.git