diff --git a/android/app/src/main/AndroidManifest.xml b/android/app/src/main/AndroidManifest.xml index 0ad2aa32..b40cf1fc 100644 --- a/android/app/src/main/AndroidManifest.xml +++ b/android/app/src/main/AndroidManifest.xml @@ -5,6 +5,8 @@ additional functionality it is fine to subclass or reimplement FlutterApplication and put your custom class here. --> + + @@ -26,6 +29,18 @@ This is used by the Flutter tool to generate GeneratedPluginRegistrant.java --> + + + + + + + + + + + + diff --git a/ios/Flutter/.last_build_id b/ios/Flutter/.last_build_id index 7d0c1ecd..23e945dc 100644 --- a/ios/Flutter/.last_build_id +++ b/ios/Flutter/.last_build_id @@ -1 +1 @@ -de6ad1e9bb4f0c60a77292d2bb839254 \ No newline at end of file +36d97e3e1483892c0e0296e4c06bf36f \ No newline at end of file diff --git a/ios/Podfile.lock b/ios/Podfile.lock index a83d6724..d1321873 100644 --- a/ios/Podfile.lock +++ b/ios/Podfile.lock @@ -1,4 +1,33 @@ PODS: + - AMap3DMap-NO-IDFA (7.6.0): + - AMapFoundation-NO-IDFA (~> 1.6.3) + - amap_core_fluttify (0.0.1): + - AMapFoundation-NO-IDFA (~> 1.6.4) + - Flutter + - foundation_fluttify + - amap_location_fluttify (0.0.1): + - amap_core_fluttify + - AMapLocation-NO-IDFA (= 2.6.7) + - Flutter + - foundation_fluttify + - amap_map_fluttify (0.0.1): + - AMap3DMap-NO-IDFA (= 7.6.0) + - amap_core_fluttify + - amap_location_fluttify + - amap_search_fluttify + - Flutter + - foundation_fluttify + - url_launcher + - amap_search_fluttify (0.0.1): + - amap_core_fluttify + - AMapSearch-NO-IDFA (~> 7.3.0) + - Flutter + - foundation_fluttify + - AMapFoundation-NO-IDFA (1.6.4) + - AMapLocation-NO-IDFA (2.6.7): + - AMapFoundation-NO-IDFA (~> 1.6.4) + - AMapSearch-NO-IDFA (7.3.0): + - AMapFoundation-NO-IDFA (~> 1.6.3) - barcode_scan (0.0.1): - Flutter - MTBBarcodeScanner @@ -8,12 +37,18 @@ PODS: - BSGridCollectionViewLayout (= 1.2.5) - BSImageView (= 1.0.3) - BSImageView (1.0.3) + - core_location_fluttify (0.0.1): + - Flutter + - foundation_fluttify - Flutter (1.0.0) - - flutter_pdfview (1.0.2): + - fluwx (0.0.1): - Flutter + - WechatOpenSDK (= 1.8.7.1) - FMDB (2.7.5): - FMDB/standard (= 2.7.5) - FMDB/standard (2.7.5) + - foundation_fluttify (0.0.1): + - Flutter - MTBBarcodeScanner (5.0.11) - multi_image_picker (4.7.14): - BSImagePicker (~> 2.10.3) @@ -40,11 +75,18 @@ PODS: - Flutter - webview_flutter (0.0.1): - Flutter + - WechatOpenSDK (1.8.7.1) DEPENDENCIES: + - amap_core_fluttify (from `.symlinks/plugins/amap_core_fluttify/ios`) + - amap_location_fluttify (from `.symlinks/plugins/amap_location_fluttify/ios`) + - amap_map_fluttify (from `.symlinks/plugins/amap_map_fluttify/ios`) + - amap_search_fluttify (from `.symlinks/plugins/amap_search_fluttify/ios`) - barcode_scan (from `.symlinks/plugins/barcode_scan/ios`) + - core_location_fluttify (from `.symlinks/plugins/core_location_fluttify/ios`) - Flutter (from `Flutter`) - - flutter_pdfview (from `.symlinks/plugins/flutter_pdfview/ios`) + - fluwx (from `.symlinks/plugins/fluwx/ios`) + - foundation_fluttify (from `.symlinks/plugins/foundation_fluttify/ios`) - multi_image_picker (from `.symlinks/plugins/multi_image_picker/ios`) - package_info (from `.symlinks/plugins/package_info/ios`) - path_provider (from `.symlinks/plugins/path_provider/ios`) @@ -59,20 +101,37 @@ DEPENDENCIES: SPEC REPOS: trunk: + - AMap3DMap-NO-IDFA + - AMapFoundation-NO-IDFA + - AMapLocation-NO-IDFA + - AMapSearch-NO-IDFA - BSGridCollectionViewLayout - BSImagePicker - BSImageView - FMDB - MTBBarcodeScanner - SwiftProtobuf + - WechatOpenSDK EXTERNAL SOURCES: + amap_core_fluttify: + :path: ".symlinks/plugins/amap_core_fluttify/ios" + amap_location_fluttify: + :path: ".symlinks/plugins/amap_location_fluttify/ios" + amap_map_fluttify: + :path: ".symlinks/plugins/amap_map_fluttify/ios" + amap_search_fluttify: + :path: ".symlinks/plugins/amap_search_fluttify/ios" barcode_scan: :path: ".symlinks/plugins/barcode_scan/ios" + core_location_fluttify: + :path: ".symlinks/plugins/core_location_fluttify/ios" Flutter: :path: Flutter - flutter_pdfview: - :path: ".symlinks/plugins/flutter_pdfview/ios" + fluwx: + :path: ".symlinks/plugins/fluwx/ios" + foundation_fluttify: + :path: ".symlinks/plugins/foundation_fluttify/ios" multi_image_picker: :path: ".symlinks/plugins/multi_image_picker/ios" package_info: @@ -97,13 +156,23 @@ EXTERNAL SOURCES: :path: ".symlinks/plugins/webview_flutter/ios" SPEC CHECKSUMS: + AMap3DMap-NO-IDFA: 5e5b483ef230d1bed6c8d989d36254a66c67a6fc + amap_core_fluttify: 832331914f028c32aebf1dab23474a82aff828e8 + amap_location_fluttify: baa3007e3f215456ab2ea2f4ccccf5bc1a9a164b + amap_map_fluttify: 6b64256d6ccea7813e1b6423fcf7b5ef10d3c984 + amap_search_fluttify: f83f950b4f8e8688bc8b100684c33868335f2e06 + AMapFoundation-NO-IDFA: 68a24362b110b8e0a3677605d0fd36bdf521f2bb + AMapLocation-NO-IDFA: 2a3edfee336b38481b892e1ecc85df0f6b365851 + AMapSearch-NO-IDFA: 85555dc9ba312949d39a259baa4ef4e0619fa944 barcode_scan: a5c27959edfafaa0c771905bad0b29d6d39e4479 BSGridCollectionViewLayout: 333dcb457a5a3bdd9212607ab5756553dcfe06cb BSImagePicker: 07404254f2fcdaf5a2eb403c0f8c337267ce8738 BSImageView: a149459433a2687157d034c78e059d30ac7f2544 + core_location_fluttify: 9466a411ea7d22c6349c7e6a767ae4623f01eb1d Flutter: 0e3d915762c693b495b44d77113d4970485de6ec - flutter_pdfview: 25f53dd6097661e6395b17de506e6060585946bd + fluwx: 07a55ed66bf3a4961e836a2a411b02dcada32902 FMDB: 2ce00b547f966261cd18927a3ddb07cb6f3db82a + foundation_fluttify: 0c45145e3fad1fb99188e4979daed5b24cd9b278 MTBBarcodeScanner: f453b33c4b7dfe545d8c6484ed744d55671788cb multi_image_picker: c068931d08240565e0615fb01437d16984909183 package_info: 873975fc26034f0b863a300ad47e7f1ac6c7ec62 @@ -117,6 +186,7 @@ SPEC CHECKSUMS: video_player: 9cc823b1d9da7e8427ee591e8438bfbcde500e6e wakelock: 0d4a70faf8950410735e3f61fb15d517c8a6efc4 webview_flutter: d2b4d6c66968ad042ad94cbb791f5b72b4678a96 + WechatOpenSDK: 6a4d1436c15b3b5fe2a0bd383f3046010186da44 PODFILE CHECKSUM: a75497545d4391e2d394c3668e20cfb1c2bbd4aa diff --git a/ios/Runner.xcodeproj/project.pbxproj b/ios/Runner.xcodeproj/project.pbxproj index a48bf35f..fd6f59b6 100644 --- a/ios/Runner.xcodeproj/project.pbxproj +++ b/ios/Runner.xcodeproj/project.pbxproj @@ -139,6 +139,7 @@ 9705A1C41CF9048500538489 /* Embed Frameworks */, 3B06AD1E1E4923F5004D2608 /* Thin Binary */, 7B444912F8858E461E3F47D9 /* [CP] Embed Pods Frameworks */, + 0817DB8E3F8D6FF182439CE0 /* [CP] Copy Pods Resources */, ); buildRules = ( ); @@ -197,6 +198,23 @@ /* End PBXResourcesBuildPhase section */ /* Begin PBXShellScriptBuildPhase section */ + 0817DB8E3F8D6FF182439CE0 /* [CP] Copy Pods Resources */ = { + isa = PBXShellScriptBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + inputFileListPaths = ( + "${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-resources-${CONFIGURATION}-input-files.xcfilelist", + ); + name = "[CP] Copy Pods Resources"; + outputFileListPaths = ( + "${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-resources-${CONFIGURATION}-output-files.xcfilelist", + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-resources.sh\"\n"; + showEnvVarsInLog = 0; + }; 3B06AD1E1E4923F5004D2608 /* Thin Binary */ = { isa = PBXShellScriptBuildPhase; buildActionMask = 2147483647; diff --git a/lib/main.dart b/lib/main.dart index 39f32681..a1e57fee 100644 --- a/lib/main.dart +++ b/lib/main.dart @@ -1,6 +1,7 @@ import 'dart:io'; import 'package:akuCommunity/pages/sign/sign_in_page.dart'; +import 'package:amap_map_fluttify/amap_map_fluttify.dart'; import 'package:ani_route/ani_route.dart'; import 'package:flutter/material.dart'; import 'package:flutter/cupertino.dart'; @@ -14,7 +15,9 @@ import 'package:oktoast/oktoast.dart'; import 'package:akuCommunity/routers/router_init.dart'; void main() { + WidgetsFlutterBinding.ensureInitialized(); ARoute.init(true); + AmapLocation.instance.init(iosKey: 'ios key'); runApp(MyApp()); } diff --git a/lib/pages/goods_details/goods_details_page.dart b/lib/pages/goods_details/goods_details_page.dart index 78cc9157..7989aa53 100644 --- a/lib/pages/goods_details/goods_details_page.dart +++ b/lib/pages/goods_details/goods_details_page.dart @@ -7,7 +7,6 @@ import 'widget/goods_app_bar.dart'; import 'widget/product_swiper.dart'; import 'widget/product_content.dart'; import 'widget/product_service.dart'; -import 'widget/product_specs.dart'; import 'widget/product_evaluate.dart'; import 'widget/product_detail.dart'; import 'widget/goods_details_bottom_bar.dart'; diff --git a/lib/pages/market/market_cart_page/widget/market_cart_bottom_bar.dart b/lib/pages/market/market_cart_page/widget/market_cart_bottom_bar.dart index 848353ad..ec530d4b 100644 --- a/lib/pages/market/market_cart_page/widget/market_cart_bottom_bar.dart +++ b/lib/pages/market/market_cart_page/widget/market_cart_bottom_bar.dart @@ -1,3 +1,7 @@ + +import 'package:akuCommunity/pages/confirm_order_page/confirm_order_page.dart'; +import 'package:akuCommunity/routers/page_routers.dart'; +import 'package:ani_route/ani_route.dart'; import 'package:flutter/material.dart'; import 'package:flutter/cupertino.dart'; import 'package:provider/provider.dart'; @@ -40,7 +44,7 @@ class MarketCartBottomBar extends StatelessWidget { ); } - Widget _settlement(CartProvidde model) { + Widget _settlement(CartProvidde model,BuildContext context) { return Row( children: [ model.allPrice != 0 @@ -94,7 +98,7 @@ class MarketCartBottomBar extends StatelessWidget { mainAxisAlignment: MainAxisAlignment.spaceBetween, children: [ _selectAll(model), - _settlement(model), + _settlement(model,context,) ], ), ); diff --git a/lib/pages/one_alarm/one_alarm_page.dart b/lib/pages/one_alarm/one_alarm_page.dart deleted file mode 100644 index f1b9855a..00000000 --- a/lib/pages/one_alarm/one_alarm_page.dart +++ /dev/null @@ -1,263 +0,0 @@ -import 'dart:ui'; -import 'package:flutter/material.dart'; -import 'package:flutter/cupertino.dart'; -import 'package:flutter_icons/flutter_icons.dart'; -import 'package:sliding_up_panel/sliding_up_panel.dart'; -import 'package:flutter_map/flutter_map.dart'; -import 'package:latlong/latlong.dart'; -import 'package:akuCommunity/utils/screenutil.dart'; -import 'package:akuCommunity/widget/common_app_bar.dart'; - -class OneAlarmPage extends StatefulWidget { - OneAlarmPage({Key key}) : super(key: key); - - @override - _OneAlarmPageState createState() => _OneAlarmPageState(); -} - -class _OneAlarmPageState extends State { - @override - void initState() { - super.initState(); - } - - @override - Widget build(BuildContext context) { - return Scaffold( - appBar: PreferredSize( - child: CommonAppBar( - title: '一键报警', - subtitle: '功能说明', - ), - preferredSize: Size.fromHeight(kToolbarHeight), - ), - body: Stack( - alignment: Alignment.topCenter, - children: [ - SlidingUpPanel( - maxHeight: Screenutil.length(271), - minHeight: Screenutil.length(271), - parallaxOffset: .5, - panelSnapping: false, - body: _body(), - panelBuilder: (sc) => _panel(sc), - ), - Positioned( - right: Screenutil.length(34), - bottom: Screenutil.length(304), - child: InkWell( - child: Container( - height: Screenutil.length(66), - width: Screenutil.length(66), - decoration: BoxDecoration( - color: Colors.white, - borderRadius: BorderRadius.circular(Screenutil.length(66)), - boxShadow: [ - BoxShadow( - color: Color(0xff000000).withOpacity(0.12), - offset: Offset(1, 1)) - ], - ), - child: Icon( - Icons.gps_fixed, - size: Screenutil.length(44), - color: Color(0xff666666), - ), - ), - ), - ), - Positioned( - top: Screenutil.length(32), - child: Container( - width: Screenutil.length(686), - padding: EdgeInsets.only( - top: Screenutil.length(24), - bottom: Screenutil.length(24), - left: Screenutil.length(32), - ), - decoration: BoxDecoration( - color: Colors.white.withOpacity(0.9), - borderRadius: BorderRadius.circular(12), - boxShadow: [ - BoxShadow( - color: Color(0xff5C5959).withOpacity(0.2), - offset: Offset(1, 1)) - ], - ), - child: Column( - crossAxisAlignment: CrossAxisAlignment.start, - children: [ - Text( - "当前位置(仅供参考)", - style: TextStyle( - fontWeight: FontWeight.w600, - color: Color(0xff333333), - fontSize: Screenutil.size(28), - ), - ), - Container( - margin: EdgeInsets.only(top: Screenutil.length(20)), - child: Row( - mainAxisAlignment: MainAxisAlignment.start, - children: [ - Icon( - Entypo.location_pin, - color: Color(0xff666666), - size: Screenutil.size(28), - ), - Container( - margin: EdgeInsets.only(left: Screenutil.length(10)), - child: Text( - "广东省深圳市龙岗区吉信街22-1附近", - style: TextStyle( - color: Color(0xff666666), - fontSize: Screenutil.size(28), - ), - ), - ), - ], - ), - ), - ], - ), - ), - ), - ], - ), - ); - } - - Widget _panel(ScrollController sc) { - return MediaQuery.removePadding( - context: context, - removeTop: true, - child: Stack( - overflow: Overflow.visible, - children: [ - ListView( - controller: sc, - children: [ - Container( - margin: EdgeInsets.only(top: Screenutil.length(146)), - width: MediaQuery.of(context).size.width, - alignment: Alignment.center, - child: Text( - '谎报警情,依法追责', - style: TextStyle( - fontWeight: FontWeight.bold, - fontSize: Screenutil.size(32), - color: Color(0xffe02020), - ), - ), - ), - Container( - margin: EdgeInsets.only(top: Screenutil.length(8)), - width: MediaQuery.of(context).size.width, - alignment: Alignment.center, - child: Text( - '谎报警情将可能被处以五日以上十日以下拘留', - style: TextStyle( - fontSize: Screenutil.size(24), - color: Color(0xff999999), - ), - ), - ), - ], - ), - Positioned( - top: -Screenutil.length(98), - width: MediaQuery.of(context).size.width, - child: Center( - child: Container( - padding: EdgeInsets.all(Screenutil.length(12)), - height: Screenutil.length(196), - width: Screenutil.length(196), - decoration: BoxDecoration( - color: Colors.white, - borderRadius: - BorderRadius.all(Radius.circular(Screenutil.length(196))), - ), - child: Container( - height: Screenutil.length(172), - width: Screenutil.length(172), - decoration: BoxDecoration( - gradient: LinearGradient( - begin: Alignment.bottomLeft, - end: Alignment.topLeft, - colors: [Color(0xffef0909), Color(0xffff8880)], - ), - borderRadius: BorderRadius.all( - Radius.circular(Screenutil.length(172))), - boxShadow: [ - BoxShadow( - color: Color(0xfffd7770).withOpacity(0.33), - offset: Offset(0, Screenutil.length(10)), - blurRadius: Screenutil.length(20), - spreadRadius: Screenutil.length(4), - ) - ], - ), - child: Icon( - Feather.phone_call, - color: Colors.white, - size: Screenutil.size(87), - ), - ), - ), - ), - ), - ], - ), - ); - } - - Widget _button(String label, IconData icon, Color color) { - return Column( - children: [ - Container( - padding: const EdgeInsets.all(16.0), - child: Icon( - icon, - color: Colors.white, - ), - decoration: - BoxDecoration(color: color, shape: BoxShape.circle, boxShadow: [ - BoxShadow( - color: Color.fromRGBO(0, 0, 0, 0.15), - blurRadius: 8.0, - ) - ]), - ), - SizedBox( - height: 12.0, - ), - Text(label), - ], - ); - } - - Widget _body() { - return FlutterMap( - options: MapOptions( - center: LatLng(22.3817, 114.05), - zoom: 13, - maxZoom: 15, - ), - layers: [ - TileLayerOptions( - urlTemplate: "http://map.geoq.cn/ArcGIS/rest/services/ChinaOnlineCommunity/MapServer/tile/{z}/{y}/{x}", - ), - MarkerLayerOptions(markers: [ - Marker( - point: LatLng(22.3817, 114.05), - builder: (ctx) => Icon( - Icons.location_on, - color: Colors.blue, - size: 48.0, - ), - height: 60), - ]), - ], - ); - } -} diff --git a/lib/pages/one_alarm/widget/alarm_page.dart b/lib/pages/one_alarm/widget/alarm_page.dart new file mode 100644 index 00000000..5e952913 --- /dev/null +++ b/lib/pages/one_alarm/widget/alarm_page.dart @@ -0,0 +1,268 @@ +import 'package:akuCommunity/utils/screenutil.dart'; +import 'package:akuCommunity/widget/common_app_bar.dart'; +import 'package:flutter/material.dart'; +import 'package:amap_map_fluttify/amap_map_fluttify.dart'; +import 'package:amap_location_fluttify/amap_location_fluttify.dart'; +import 'package:flutter_icons/flutter_icons.dart'; +import 'package:flutter_screenutil/flutter_screenutil.dart'; +import 'package:permission_handler/permission_handler.dart'; +import 'package:url_launcher/url_launcher.dart'; + +class PermissionUtil { + static Future getLocationPermission() async { + return await Permission.locationWhenInUse.request().isGranted; + } +} + +class AlarmPage extends StatefulWidget { + AlarmPage({Key key, bundle}) : super(key: key); + + @override + _AlarmPageState createState() => _AlarmPageState(); +} + +class _AlarmPageState extends State { + final _option = MyLocationOption( + show: true, + myLocationType: MyLocationType.Locate, + ); + Future _makephonenum(String url)async{ + (await canLaunch(url))?await launch(url):throw 'Could not launch $url'; + } + + AmapController _amapController; + Location _location; + @override + void initState() { + super.initState(); + AmapLocation.instance.fetchLocation().then((location) { + _location = location; + setState(() {}); + }); + PermissionUtil.getLocationPermission(); + } + + @override + void dispose() { + super.dispose(); + } + + @override + Widget build(BuildContext context) { + return Scaffold( + appBar: PreferredSize( + child: CommonAppBar( + title: '一键报警', + subtitle: '功能说明', + ), + preferredSize: Size.fromHeight(kToolbarHeight), + ), + body: Stack( + alignment: Alignment.topCenter, + children: [ + AmapView( + onMapCreated: (controller) async { + _amapController = controller; + await _amapController.showMyLocation(_option); + }, + mapType: MapType.Standard, + showZoomControl: false, + zoomLevel: 16, + ), + Column( + mainAxisAlignment: MainAxisAlignment.start, + crossAxisAlignment: CrossAxisAlignment.center, + children: [ + Container( + margin: EdgeInsets.only(top: Screenutil.length(32)), + width: 686.w, + height: Screenutil.length(148), + decoration: BoxDecoration( + color: Colors.white.withOpacity(0.9), + borderRadius: BorderRadius.circular(16), + boxShadow: [ + BoxShadow( + color: Color(0xE8FFFFFF).withOpacity(0.10), + offset: Offset(0, 2)), + ]), + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + SizedBox(height: Screenutil.length(24)), + Container( + margin: EdgeInsets.only( + top: Screenutil.length(24), + left: Screenutil.length(32)), + child: Text( + '当前位置(仅供参考)', + style: TextStyle( + fontWeight: FontWeight.w600, + color: Color(0xff333333), + fontSize: Screenutil.size(28)), + ), + ), + Container( + margin: EdgeInsets.only( + top: Screenutil.length(20), + left: Screenutil.length(32)), + child: Row( + mainAxisAlignment: MainAxisAlignment.start, + children: [ + Icon( + Entypo.location_pin, + color: Color(0xff666666), + size: Screenutil.size(29), + ), + Container( + margin: + EdgeInsets.only(left: Screenutil.length(5)), + child: Text( + (_location == null) + ? '加载中……' + : _location.aoiName, + style: TextStyle( + color: Color(0xff666666), + fontSize: Screenutil.size(28), + ), + ), + ), + ], + ), + ), + ], + )), + Spacer(), + Row( + children: [ + Spacer(), + Container( + alignment: Alignment.center, + width: Screenutil.length(66), + height: Screenutil.length(66), + decoration: BoxDecoration( + borderRadius: + BorderRadius.circular(Screenutil.length(66)), + boxShadow: [ + BoxShadow( + color: Color(0x1F000000), + offset: Offset(3, 4), + blurRadius: 6, + spreadRadius: 1, + ) + ]), + child: FlatButton( + padding: EdgeInsets.zero, + shape: RoundedRectangleBorder( + borderRadius: + BorderRadius.circular(Screenutil.length(66))), + color: Color(0xFFFFFFFF), + onPressed: () { + _amapController?.setCenterCoordinate( + _location.latLng); + Future.delayed(Duration(milliseconds: 500), () { + if (mounted) _amapController.setZoomLevel(16); + }); + }, + child: Icon( + Icons.location_searching, + size: Screenutil.length(44), + ), + ), + ), + SizedBox(width: Screenutil.length(34)), + ], + ), + SizedBox( + height: Screenutil.length(29), + ), + Container( + width: double.infinity, + height: Screenutil.length(271), + alignment: Alignment.center, + decoration: + BoxDecoration(color: Color(0xFFFFFFFF).withOpacity(0.9)), + child: Stack( + overflow: Overflow.visible, + alignment: Alignment.topCenter, + children: [ + Positioned( + bottom: Screenutil.length(173), + child: Container( + padding: EdgeInsets.all(Screenutil.length(12)), + height: Screenutil.length(196), + width: Screenutil.length(196), + decoration: BoxDecoration( + color: Colors.white, + borderRadius: BorderRadius.all( + Radius.circular(Screenutil.length(196))), + ), + child: Container( + height: Screenutil.length(172), + width: Screenutil.length(172), + decoration: BoxDecoration( + gradient: LinearGradient( + begin: Alignment.bottomLeft, + end: Alignment.topLeft, + colors: [Color(0xffef0909), Color(0xffff8880)], + ), + borderRadius: BorderRadius.all( + Radius.circular(Screenutil.length(172))), + boxShadow: [ + BoxShadow( + color: Color(0xfffd7770).withOpacity(0.33), + offset: Offset(0, Screenutil.length(10)), + blurRadius: Screenutil.length(20), + spreadRadius: Screenutil.length(4), + ) + ], + ), + child: FlatButton( + shape: RoundedRectangleBorder( + borderRadius: BorderRadius.circular( + Screenutil.length(172))), + onPressed: () { + setState(() { + _makephonenum('tel:110'); + }); + }, + child: Icon( + Feather.phone_call, + color: Colors.white, + size: Screenutil.size(87), + ), + ), + ), + ), + ), + Column( + children: [ + SizedBox(height: Screenutil.length(146)), + Text( + '谎报警情,依法追责', + style: TextStyle( + fontWeight: FontWeight.bold, + fontSize: Screenutil.size(32), + color: Color(0xffe02020), + ), + ), + Spacer(), + Text( + '谎报警情将可能被处以五日以上十日以下拘留', + style: TextStyle( + fontSize: Screenutil.size(24), + color: Color(0xff999999), + ), + ), + SizedBox(height: 19.5), + ], + ), + ], + ), + ), + ], + ) + ], + ), + ); + } +} diff --git a/lib/pages/one_alarm/widget/explain_template.dart b/lib/pages/one_alarm/widget/explain_template.dart index 9a23e2de..5857023f 100644 --- a/lib/pages/one_alarm/widget/explain_template.dart +++ b/lib/pages/one_alarm/widget/explain_template.dart @@ -3,6 +3,7 @@ import 'package:flutter/material.dart'; import 'package:flutter/cupertino.dart'; import 'package:flutter_beautiful_popup/main.dart'; import 'package:akuCommunity/utils/screenutil.dart'; +import 'package:flutter_screenutil/flutter_screenutil.dart'; class ExplainTemplate extends BeautifulPopupTemplate { @@ -14,7 +15,7 @@ class ExplainTemplate extends BeautifulPopupTemplate { @override Color get primaryColor => options.primaryColor ?? Color(0xff15c0ec); @override - final maxWidth = Screenutil.length(400); + final maxWidth = 400.w; @override final maxHeight = Screenutil.length(617); @override diff --git a/lib/pages/sign/sign_in_page.dart b/lib/pages/sign/sign_in_page.dart index 130a1ab9..1e8abd2b 100644 --- a/lib/pages/sign/sign_in_page.dart +++ b/lib/pages/sign/sign_in_page.dart @@ -1,17 +1,19 @@ import 'dart:math'; +import 'dart:ui'; import 'package:akuCommunity/pages/setting_page/agreement_page/agreement_page.dart'; import 'package:akuCommunity/pages/setting_page/agreement_page/privacy_page.dart'; import 'package:akuCommunity/pages/sign/user_authentication_page.dart'; import 'package:ani_route/ani_route.dart'; +import 'package:extended_text/extended_text.dart'; import 'package:flustars/flustars.dart' show TextUtil; import 'package:flutter/material.dart'; import 'package:flutter/cupertino.dart'; import 'package:akuCommunity/utils/screenutil.dart'; import 'package:akuCommunity/base/base_style.dart'; import 'package:akuCommunity/base/assets_image.dart'; -import 'package:flutter_screenutil/screenutil.dart'; import 'package:oktoast/oktoast.dart'; +import 'package:flutter_screenutil/flutter_screenutil.dart'; class SignInPage extends StatefulWidget { SignInPage({Key key}) : super(key: key); @@ -133,19 +135,37 @@ class _SignInPageState extends State { else if (TextUtil.isEmpty(_code.text)) showToast('密码不能为空'); else { - showDialog( + showCupertinoDialog( context: context, - child: Center( - child: CupertinoActivityIndicator(), - ), - ); - Future.delayed( - Duration(milliseconds: 1000 + Random().nextInt(500)), - () { - Navigator.pop(context); - (_phone.text == '17855823545') && (_code.text == '000000') - ? ARoute.push(context, UserAuthenticationPage()) - : showToast('账号或密码错误!'); + builder: (context) { + return CupertinoAlertDialog( + title: Text('点击登录即表示您已阅读并同意'), + content: Text( + '''点击登录即表示您已阅读并同意《闲鱼用户服务协议》《支付服务协议》(特别是免除或限制责任、管辖等粗体下划线标注的条款)。如您不同意上述协议的任何条款,您应立即停止登录及使用本软件及服务。'''), + actions: [ + CupertinoDialogAction( + child: Text('同意'), + onPressed: () { + Future.delayed( + Duration(milliseconds: 1000 + Random().nextInt(500)), + () { + Navigator.pop(context); + (_phone.text == '17855823545') && + (_code.text == '000000') + ? ARoute.push(context, UserAuthenticationPage()) + : showToast('账号或密码错误!'); + }, + ); + }, + ), + CupertinoDialogAction( + child: Text('拒绝'), + onPressed: () { + Navigator.pop(context); + }, + ), + ], + ); }, ); } @@ -176,7 +196,10 @@ class _SignInPageState extends State { @override Widget build(BuildContext context) { double _statusHeight = MediaQuery.of(context).padding.top; - ScreenUtil.init(context, width: 750, height: 1334, allowFontScaling: true); + + ScreenUtil.init(context, + designSize: Size(750, 1334), allowFontScaling: true); + return Scaffold( backgroundColor: Colors.white, appBar: _appBar(), @@ -188,53 +211,52 @@ class _SignInPageState extends State { FocusScope.of(context).requestFocus(FocusNode()); }, child: Container( - color: Colors.white, - child: ListView( - shrinkWrap: true, - children: [ - SizedBox( - height: Screenutil.length(153), - ), - _containerImage(), - SizedBox(height: Screenutil.length(16)), - Container( - alignment: Alignment.center, - child: Text( - '欢迎登录小蜜蜂', - style: TextStyle( - fontWeight: FontWeight.w600, - fontSize: BaseStyle.fontSize38, - color: BaseStyle.color333333), + color: Colors.white, + child: ListView( + shrinkWrap: true, + children: [ + SizedBox( + height: Screenutil.length(153), ), - ), - SizedBox(height: Screenutil.length(89)), - _containerTextField( - AssetsImage.PHONELOGO, _phone, '请输入手机号码', false), - SizedBox(height: Screenutil.length(27)), - _containerTextField( - AssetsImage.CODELOGO, _code, '请输入密码', true), - SizedBox(height: Screenutil.length(59)), - _inkWellLogin(), - Row( - mainAxisAlignment: MainAxisAlignment.center, - children: [ - FlatButton( - onPressed: () { - ARoute.push(context, AgreementPage()); - }, - child: Text('用户协议'), + _containerImage(), + SizedBox(height: Screenutil.length(16)), + Container( + alignment: Alignment.center, + child: Text( + '欢迎登录小蜜蜂', + style: TextStyle( + fontWeight: FontWeight.w600, + fontSize: BaseStyle.fontSize38, + color: BaseStyle.color333333), ), - SizedBox(width: Screenutil.length(15)), - FlatButton( + ), + SizedBox(height: Screenutil.length(89)), + _containerTextField( + AssetsImage.PHONELOGO, _phone, '请输入手机号码', false), + SizedBox(height: Screenutil.length(27)), + _containerTextField( + AssetsImage.CODELOGO, _code, '请输入密码', true), + SizedBox(height: Screenutil.length(59)), + _inkWellLogin(), + Row( + mainAxisAlignment: MainAxisAlignment.center, + children: [ + FlatButton( onPressed: () { - ARoute.push(context, PrivacyPage()); + ARoute.push(context, AgreementPage()); }, - child: Text('隐私政策')) - ], - ) - ], - ), - ), + child: Text('用户协议'), + ), + SizedBox(width: Screenutil.length(15)), + FlatButton( + onPressed: () { + ARoute.push(context, PrivacyPage()); + }, + child: Text('隐私政策')) + ], + ), + ], + )), ), ), ), diff --git a/lib/pages/tab_navigator.dart b/lib/pages/tab_navigator.dart index 6129dc95..51d1fc97 100644 --- a/lib/pages/tab_navigator.dart +++ b/lib/pages/tab_navigator.dart @@ -35,7 +35,7 @@ class _TabNavigatorState extends State { @override Widget build(BuildContext context) { - ScreenUtil.init(context, width: 750, height: 1334, allowFontScaling: true); + ScreenUtil.init(context, designSize: Size(750, 1334), allowFontScaling: true); double iconSize = ScreenUtil().setWidth(44); //底部导航来 List _bottomNav = [ diff --git a/lib/pages/total_application_page/total_applications_page.dart b/lib/pages/total_application_page/total_applications_page.dart index 8a992f5a..b912210b 100644 --- a/lib/pages/total_application_page/total_applications_page.dart +++ b/lib/pages/total_application_page/total_applications_page.dart @@ -1,3 +1,5 @@ +import 'package:akuCommunity/pages/one_alarm/widget/alarm_page.dart'; +import 'package:ani_route/ani_route.dart'; import 'package:flutter/material.dart'; import 'package:flutter/cupertino.dart'; import 'package:akuCommunity/utils/screenutil.dart'; @@ -195,8 +197,7 @@ class _TotalApplicationsPageState extends State { context, PageName.goods_manage_page.toString()); break; case '一键报警': - Navigator.pushNamed( - context, PageName.one_alarm_page.toString()); + ARoute.push(context, AlarmPage()); break; default: break; diff --git a/lib/routers/page_routers.dart b/lib/routers/page_routers.dart index 345dcdfd..be814f60 100644 --- a/lib/routers/page_routers.dart +++ b/lib/routers/page_routers.dart @@ -1,3 +1,4 @@ +import 'package:akuCommunity/pages/one_alarm/widget/alarm_page.dart'; import 'package:akuCommunity/pages/setting_page/agreement_page/privacy_page.dart'; import 'package:fluro/fluro.dart'; import 'package:flutter/material.dart'; @@ -79,7 +80,6 @@ import 'package:akuCommunity/pages/market_class/market_class_page.dart'; import 'package:akuCommunity/pages/address_page/address_page.dart'; import 'package:akuCommunity/pages/address_page/address_edit_page.dart'; -import 'package:akuCommunity/pages/one_alarm/one_alarm_page.dart'; import 'package:akuCommunity/pages/fitup_manage/fitup_manage_page.dart'; @@ -168,6 +168,7 @@ enum PageName { things_evaluate_page, agreement_page, privacy_page, + alarm_page, } class Bundle { @@ -346,8 +347,6 @@ final Map pageRoutes = { PageBuilder(builder: (bundle) => AddressPage()), PageName.address_edit_page: PageBuilder(builder: (bundle) => AddressEditPage(bundle: bundle)), - PageName.one_alarm_page: - PageBuilder(builder: (bundle) => OneAlarmPage()), PageName.fitup_manage_page: PageBuilder(builder: (bundle) => FitupManagePage()), PageName.setting_page: @@ -368,4 +367,6 @@ final Map pageRoutes = { PageBuilder(builder: (bundle) => ThingsCreatePage(bundle: bundle)), PageName.things_evaluate_page: PageBuilder(builder: (bundle) => ThingsEvaluatePage(bundle: bundle)), + PageName.alarm_page: + PageBuilder(builder: (bundle)=>AlarmPage(bundle:bundle),) }; diff --git a/pubspec.lock b/pubspec.lock index 7ee23107..c9d7f0d9 100644 --- a/pubspec.lock +++ b/pubspec.lock @@ -8,6 +8,34 @@ packages: url: "https://pub.flutter-io.cn" source: hosted version: "7.0.0" + amap_core_fluttify: + dependency: transitive + description: + name: amap_core_fluttify + url: "https://pub.flutter-io.cn" + source: hosted + version: "0.12.0" + amap_location_fluttify: + dependency: "direct main" + description: + name: amap_location_fluttify + url: "https://pub.flutter-io.cn" + source: hosted + version: "0.18.0" + amap_map_fluttify: + dependency: "direct main" + description: + name: amap_map_fluttify + url: "https://pub.flutter-io.cn" + source: hosted + version: "0.29.0" + amap_search_fluttify: + dependency: transitive + description: + name: amap_search_fluttify + url: "https://pub.flutter-io.cn" + source: hosted + version: "0.14.0" analyzer: dependency: transitive description: @@ -162,6 +190,13 @@ packages: url: "https://pub.flutter-io.cn" source: hosted version: "2.1.1" + core_location_fluttify: + dependency: transitive + description: + name: core_location_fluttify + url: "https://pub.flutter-io.cn" + source: hosted + version: "0.4.1" crypto: dependency: transitive description: @@ -432,7 +467,7 @@ packages: name: flutter_screenutil url: "https://pub.flutter-io.cn" source: hosted - version: "2.3.1" + version: "3.2.0" flutter_slidable: dependency: "direct main" description: @@ -485,6 +520,13 @@ packages: url: "https://pub.flutter-io.cn" source: hosted version: "8.8.1" + foundation_fluttify: + dependency: transitive + description: + name: foundation_fluttify + url: "https://pub.flutter-io.cn" + source: hosted + version: "0.9.10+1" glob: dependency: transitive description: diff --git a/pubspec.yaml b/pubspec.yaml index 0583f4f5..11464346 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -15,7 +15,7 @@ publish_to: 'none' # Remove this line if you wish to publish to pub.dev # In iOS, build-name is used as CFBundleShortVersionString while build-number used as CFBundleVersion. # Read more about iOS versioning at # https://developer.apple.com/library/archive/documentation/General/Reference/InfoPlistKeyReference/Articles/CoreFoundationKeys.html -version: 1.0.4+5 +version: 1.0.5+6 environment: sdk: ">=2.7.0 <3.0.0" @@ -47,7 +47,7 @@ dependencies: flutter_redux: ^0.5.3 provider: ^4.1.3 # 屏幕适配 - flutter_screenutil: ^2.3.1 + flutter_screenutil: ^3.2.0 cupertino_icons: ^0.1.3 # 打电话等各种功能 url_launcher: 5.5.2 @@ -112,6 +112,9 @@ dependencies: flutter_picker: ^1.1.5 #加载动画 loading_animations: ^2.1.0 + #高德地图 + amap_map_fluttify: + amap_location_fluttify: #用户存储路径 path_provider: ^1.6.18