From 0226efdb3bf0f76ad432f0b489dbd0035f188029 Mon Sep 17 00:00:00 2001 From: laiiihz Date: Thu, 25 Mar 2021 17:56:48 +0800 Subject: [PATCH] =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E6=88=BF=E5=B1=8B=E9=A1=B5?= =?UTF-8?q?=E9=9D=A2-=E9=80=89=E6=8B=A9=E5=B0=8F=E5=8C=BA=EF=BC=8C?= =?UTF-8?q?=E9=80=89=E6=8B=A9=E6=A5=BC=E6=A0=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- assets/static/reviewing.webp | Bin 0 -> 27986 bytes lib/const/resource.dart | 4 + lib/constants/app_theme.dart | 31 +++ lib/constants/application_objects.dart | 2 +- lib/ui/profile/house/add_house_page.dart | 195 +++++++++++++++++++ lib/ui/profile/house/house_item.dart | 15 ++ lib/ui/profile/house/house_owners_page.dart | 39 ++++ lib/ui/profile/house/pick_building_page.dart | 56 ++++++ lib/ui/profile/house/pick_plot_page.dart | 18 ++ lib/ui/profile/house/pick_unit_page.dart | 50 +++++ lib/ui/profile/house_owners_page.dart | 16 -- pubspec.yaml | 1 + 12 files changed, 410 insertions(+), 17 deletions(-) create mode 100644 assets/static/reviewing.webp create mode 100644 lib/ui/profile/house/add_house_page.dart create mode 100644 lib/ui/profile/house/house_item.dart create mode 100644 lib/ui/profile/house/house_owners_page.dart create mode 100644 lib/ui/profile/house/pick_building_page.dart create mode 100644 lib/ui/profile/house/pick_plot_page.dart create mode 100644 lib/ui/profile/house/pick_unit_page.dart delete mode 100644 lib/ui/profile/house_owners_page.dart diff --git a/assets/static/reviewing.webp b/assets/static/reviewing.webp new file mode 100644 index 0000000000000000000000000000000000000000..41302ca3dfe183afa76f4af1d1a5ef93634fac5e GIT binary patch literal 27986 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 XQ@gUN=9^*~!?H`~Xk@5=XYBt0r%2#W literal 0 HcmV?d00001 diff --git a/lib/const/resource.dart b/lib/const/resource.dart index 5dc89801..3731703e 100644 --- a/lib/const/resource.dart +++ b/lib/const/resource.dart @@ -474,6 +474,10 @@ class R { /// ![preview](file:///Users/akufe/Documents/akuCommunity/assets/json/zbbj.json) static const String ASSETS_JSON_ZBBJ_JSON = 'assets/json/zbbj.json'; + /// ![preview](file:///Users/akufe/Documents/akuCommunity/assets/static/reviewing.webp) + static const String ASSETS_STATIC_REVIEWING_WEBP = + 'assets/static/reviewing.webp'; + /// ![preview](file:///Users/akufe/Documents/akuCommunity/assets/tab/bkjh.png) static const String ASSETS_TAB_BKJH_PNG = 'assets/tab/bkjh.png'; diff --git a/lib/constants/app_theme.dart b/lib/constants/app_theme.dart index 0d54d446..42fbb2c8 100644 --- a/lib/constants/app_theme.dart +++ b/lib/constants/app_theme.dart @@ -7,6 +7,12 @@ class AppTheme { return ThemeData(primarySwatch: Colors.blue).copyWith( primaryColor: Color(0xFFFFD000), accentColor: Color(0xFFFFD000), + textTheme: TextTheme( + subtitle1: TextStyle( + fontSize: 28.sp, + color: Color(0xFF333333), + ), + ), floatingActionButtonTheme: FloatingActionButtonThemeData().copyWith( backgroundColor: Color(0xFFFFD000), ), @@ -47,6 +53,31 @@ class AppTheme { return null; }), ), + elevatedButtonTheme: ElevatedButtonThemeData( + style: ButtonStyle( + backgroundColor: MaterialStateProperty.resolveWith((states) { + if (states.contains(MaterialState.disabled)) + return Color(0xFFFFF4D7); + return Color(0xFFFFD000); + }), + elevation: MaterialStateProperty.all(0), + foregroundColor: MaterialStateProperty.resolveWith((states) { + if (states.contains(MaterialState.disabled)) + return Color(0xFF666666); + return Color(0xFF333333); + }), + textStyle: MaterialStateProperty.all(TextStyle( + fontSize: 32.sp, + fontWeight: FontWeight.bold, + )), + padding: MaterialStateProperty.all( + EdgeInsets.symmetric(horizontal: 76.w, vertical: 22.w), + ), + enableFeedback: true, + ), + ), + materialTapTargetSize: MaterialTapTargetSize.shrinkWrap, + dividerColor: Color(0xFFE8E8E8), ); } } diff --git a/lib/constants/application_objects.dart b/lib/constants/application_objects.dart index 7dc72014..bac70415 100644 --- a/lib/constants/application_objects.dart +++ b/lib/constants/application_objects.dart @@ -1,4 +1,4 @@ -import 'package:akuCommunity/ui/profile/house_owners_page.dart'; +import 'package:akuCommunity/ui/profile/house/house_owners_page.dart'; import 'package:flutter/material.dart'; import 'package:flutter/widgets.dart'; diff --git a/lib/ui/profile/house/add_house_page.dart b/lib/ui/profile/house/add_house_page.dart new file mode 100644 index 00000000..68551a0b --- /dev/null +++ b/lib/ui/profile/house/add_house_page.dart @@ -0,0 +1,195 @@ +import 'package:akuCommunity/ui/profile/house/house_item.dart'; +import 'package:akuCommunity/ui/profile/house/pick_building_page.dart'; +import 'package:akuCommunity/ui/profile/house/pick_plot_page.dart'; +import 'package:akuCommunity/widget/bee_scaffold.dart'; +import 'package:flustars/flustars.dart'; +import 'package:flutter/cupertino.dart'; +import 'package:flutter/material.dart'; +import 'package:akuCommunity/utils/headers.dart'; +import 'package:flutter_screenutil/flutter_screenutil.dart'; +import 'package:get/get.dart'; + +class AddHousePage extends StatefulWidget { + AddHousePage({Key key}) : super(key: key); + + @override + _AddHousePageState createState() => _AddHousePageState(); +} + +class _AddHousePageState extends State { + TextEditingController _nameController = TextEditingController(); + TextEditingController _idController = TextEditingController(); + GlobalKey _formKey = GlobalKey(); + HouseItem _item; + TextStyle get _hintStyle => TextStyle( + fontSize: 36.sp, + fontWeight: FontWeight.bold, + color: Color(0xFF999999), + ); + + TextStyle get _textStyle => _hintStyle.copyWith(color: Color(0xFF333333)); + + bool get _buttonCanTap => + _nameController.text.isNotEmpty && _idController.text.isNotEmpty; + _renderTile({ + String title, + Widget item, + }) { + return Column( + crossAxisAlignment: CrossAxisAlignment.start, + mainAxisSize: MainAxisSize.min, + children: [ + Padding( + padding: EdgeInsets.symmetric(horizontal: 32.w, vertical: 16.w), + child: Text(title, style: Theme.of(context).textTheme.subtitle1), + ), + item ?? SizedBox(), + ], + ); + } + + _renderTextField({ + String hintText, + TextEditingController controller, + FormFieldValidator validator, + }) { + return TextFormField( + controller: controller, + validator: validator, + style: _textStyle, + onChanged: (_) => setState(() {}), + decoration: InputDecoration( + border: InputBorder.none, + hintText: hintText, + hintStyle: _hintStyle, + isDense: true, + contentPadding: EdgeInsets.symmetric( + horizontal: 32.w, + vertical: 30.w, + ), + ), + ); + } + + _renderPicker({ + @required String text, + @required String hintText, + VoidCallback onTap, + }) { + bool showText = text?.isNotEmpty ?? false; + return MaterialButton( + onPressed: onTap, + minWidth: double.infinity, + padding: EdgeInsets.symmetric(horizontal: 32.w, vertical: 30.w), + child: Row( + children: [ + Text( + showText ? text : hintText, + style: showText ? _textStyle : _hintStyle, + ), + Spacer(), + if (onTap != null) + Icon( + CupertinoIcons.chevron_forward, + size: 38.w, + color: Color(0xFFE8E8E8), + ), + ], + ), + ); + } + + @override + void dispose() { + _nameController?.dispose(); + _idController?.dispose(); + super.dispose(); + } + + @override + Widget build(BuildContext context) { + return BeeScaffold( + title: '添加房屋', + body: Material( + color: Colors.white, + child: Form( + key: _formKey, + child: ListView( + children: [ + _renderTile( + title: '小区名称', + item: _renderPicker( + text: '人才公寓智慧小区', + hintText: '请选择小区', + // 跳转到选择小区页面 + // TODO 小区页面 + // onTap: () { + // Get.to(() => PickPlotPage()); + // }, + ), + ), + _renderTile( + title: '楼栋、单元、室', + item: _renderPicker( + text: _item.houseName, + hintText: '请选择楼栋、单元、室', + onTap: () async { + HouseItem tempItem = await Get.to(() => PickBuildingPage()); + if (tempItem != null) _item = tempItem; + }, + ), + ), + _renderTile( + title: '身份', + item: _renderPicker( + text: '', + hintText: '请选择身份', + onTap: () {}, + ), + ), + _renderTile( + title: '姓名', + item: _renderTextField( + hintText: '请输入姓名', + controller: _nameController, + validator: (text) { + if (!RegexUtil.isZh(text)) return '请输入正确的姓名'; + return null; + }), + ), + _renderTile( + title: '身份证号', + item: _renderTextField( + hintText: '请输入身份证号', + controller: _idController, + validator: (text) { + if (!RegexUtil.isIDCard(text)) return '请输入正确的身份证号码'; + return null; + }, + ), + ), + ].sepWidget( + separate: Divider( + indent: 32.w, + endIndent: 32.w, + height: 1.w, + thickness: 1.w, + )), + ), + ), + ), + bottomNavi: ElevatedButton( + child: Text('提交审核'), + onPressed: _buttonCanTap + ? () { + if (_formKey.currentState.validate()) {} + } + : null, + style: ButtonStyle( + padding: + MaterialStateProperty.all(EdgeInsets.symmetric(vertical: 26.w)), + ), + ), + ); + } +} diff --git a/lib/ui/profile/house/house_item.dart b/lib/ui/profile/house/house_item.dart new file mode 100644 index 00000000..4abede32 --- /dev/null +++ b/lib/ui/profile/house/house_item.dart @@ -0,0 +1,15 @@ +import 'package:akuCommunity/model/user/pick_building_model.dart'; +import 'package:flutter/foundation.dart'; + +class HouseItem { + PickBuildingModel building; + PickBuildingModel house; + HouseItem({ + @required this.building, + @required this.house, + }); + + int get houseCode => house.value; + + String get houseName => '${building.label}-${house.label}'; +} diff --git a/lib/ui/profile/house/house_owners_page.dart b/lib/ui/profile/house/house_owners_page.dart new file mode 100644 index 00000000..44021580 --- /dev/null +++ b/lib/ui/profile/house/house_owners_page.dart @@ -0,0 +1,39 @@ +import 'package:akuCommunity/ui/profile/house/add_house_page.dart'; +import 'package:akuCommunity/widget/bee_scaffold.dart'; +import 'package:flutter/material.dart'; +import 'package:akuCommunity/const/resource.dart'; +import 'package:flutter_screenutil/flutter_screenutil.dart'; +import 'package:get/get.dart'; + +class HouseOwnersPage extends StatefulWidget { + HouseOwnersPage({Key key}) : super(key: key); + + @override + _HouseOwnersPageState createState() => _HouseOwnersPageState(); +} + +class _HouseOwnersPageState extends State { + @override + Widget build(BuildContext context) { + return BeeScaffold( + title: '我的房屋', + body: Column( + mainAxisAlignment: MainAxisAlignment.center, + children: [ + Padding( + padding: EdgeInsets.symmetric(horizontal: 75.w), + child: Image.asset(R.ASSETS_STATIC_REVIEWING_WEBP), + ), + ElevatedButton( + onPressed: _addHouse, + child: Text('添加房屋'), + ), + ], + ), + ); + } + + _addHouse() async { + await Get.to(() => AddHousePage()); + } +} diff --git a/lib/ui/profile/house/pick_building_page.dart b/lib/ui/profile/house/pick_building_page.dart new file mode 100644 index 00000000..3871c143 --- /dev/null +++ b/lib/ui/profile/house/pick_building_page.dart @@ -0,0 +1,56 @@ +import 'package:akuCommunity/ui/profile/house/house_item.dart'; +import 'package:akuCommunity/ui/profile/house/pick_unit_page.dart'; +import 'package:flutter/material.dart'; + +import 'package:flutter_easyrefresh/easy_refresh.dart'; +import 'package:get/get.dart'; +import 'package:velocity_x/velocity_x.dart'; + +import 'package:akuCommunity/model/user/pick_building_model.dart'; +import 'package:akuCommunity/pages/sign/sign_func.dart'; +import 'package:akuCommunity/widget/bee_scaffold.dart'; + +class PickBuildingPage extends StatefulWidget { + PickBuildingPage({Key key}) : super(key: key); + + @override + _PickBuildingPageState createState() => _PickBuildingPageState(); +} + +class _PickBuildingPageState extends State { + List _buildingModels = []; + _buildItem(PickBuildingModel model) { + return ListTile( + title: model.label.text.make(), + onTap: () async { + PickBuildingModel houseModel = + await Get.to(() => PickUnitPage(buildingId: model.value)); + if (houseModel != null) { + HouseItem item = HouseItem(building: model, house: houseModel); + Get.back(result: item); + } + }, + ).material(color: Colors.white); + } + + @override + Widget build(BuildContext context) { + return BeeScaffold( + title: '选择楼栋', + body: EasyRefresh( + header: MaterialHeader(), + firstRefresh: true, + onRefresh: () async { + _buildingModels = await SignFunc.getBuildingInfo(); + setState(() {}); + }, + child: ListView.builder( + itemBuilder: (context, index) { + return _buildItem(_buildingModels[index]); + }, + itemCount: _buildingModels.length, + ), + ), + ); + } +} diff --git a/lib/ui/profile/house/pick_plot_page.dart b/lib/ui/profile/house/pick_plot_page.dart new file mode 100644 index 00000000..1613768f --- /dev/null +++ b/lib/ui/profile/house/pick_plot_page.dart @@ -0,0 +1,18 @@ +import 'package:akuCommunity/widget/bee_scaffold.dart'; +import 'package:flutter/material.dart'; + +class PickPlotPage extends StatefulWidget { + PickPlotPage({Key key}) : super(key: key); + + @override + _PickPlotPageState createState() => _PickPlotPageState(); +} + +class _PickPlotPageState extends State { + @override + Widget build(BuildContext context) { + return BeeScaffold( + title: '选择小区', + ); + } +} diff --git a/lib/ui/profile/house/pick_unit_page.dart b/lib/ui/profile/house/pick_unit_page.dart new file mode 100644 index 00000000..528f3505 --- /dev/null +++ b/lib/ui/profile/house/pick_unit_page.dart @@ -0,0 +1,50 @@ +import 'package:akuCommunity/model/user/pick_building_model.dart'; +import 'package:akuCommunity/pages/sign/sign_func.dart'; +import 'package:akuCommunity/provider/sign_up_provider.dart'; +import 'package:akuCommunity/widget/bee_scaffold.dart'; +import 'package:flutter/material.dart'; +import 'package:flutter_easyrefresh/easy_refresh.dart'; +import 'package:get/get.dart'; +import 'package:provider/provider.dart'; +import 'package:velocity_x/velocity_x.dart'; + +class PickUnitPage extends StatefulWidget { + final int buildingId; + PickUnitPage({Key key, this.buildingId}) : super(key: key); + + @override + _PickUnitPageState createState() => _PickUnitPageState(); +} + +class _PickUnitPageState extends State { + List _buildingModels = []; + _buildItem(PickBuildingModel model) { + return ListTile( + title: model.label.text.make(), + onTap: () { + Get.back(result: model); + }, + ).material(color: Colors.white); + } + + @override + Widget build(BuildContext context) { + return BeeScaffold( + title: '选择楼栋', + body: EasyRefresh( + header: MaterialHeader(), + firstRefresh: true, + onRefresh: () async { + _buildingModels = await SignFunc.getUnitInfo(widget.buildingId); + setState(() {}); + }, + child: ListView.builder( + itemBuilder: (context, index) { + return _buildItem(_buildingModels[index]); + }, + itemCount: _buildingModels.length, + ), + ), + ); + } +} diff --git a/lib/ui/profile/house_owners_page.dart b/lib/ui/profile/house_owners_page.dart deleted file mode 100644 index 76b27bc5..00000000 --- a/lib/ui/profile/house_owners_page.dart +++ /dev/null @@ -1,16 +0,0 @@ -import 'package:akuCommunity/widget/bee_scaffold.dart'; -import 'package:flutter/material.dart'; - -class HouseOwnersPage extends StatefulWidget { - HouseOwnersPage({Key key}) : super(key: key); - - @override - _HouseOwnersPageState createState() => _HouseOwnersPageState(); -} - -class _HouseOwnersPageState extends State { - @override - Widget build(BuildContext context) { - return BeeScaffold(title: '我的房屋'); - } -} diff --git a/pubspec.yaml b/pubspec.yaml index 2eb29c5b..5bd1305f 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -100,6 +100,7 @@ flutter: - assets/tab/ - assets/json/ - assets/applications/ + - assets/static/ import_sorter: emojis: true