Ver Fonte

5.28 1.0.96

huxiaoqiang há 4 anos atrás
pai
commit
f41281c574

+ 14 - 0
lib/beans/access_bean_entity.dart

@@ -0,0 +1,14 @@
+import 'package:bbyyy/generated/json/base/json_convert_content.dart';
+import 'package:bbyyy/generated/json/base/json_field.dart';
+
+class AccessBeanEntity with JsonConvert<AccessBeanEntity> {
+	@JSONField(name: "access_token")
+	String accessToken;
+	@JSONField(name: "expires_in")
+	int expiresIn;
+	@JSONField(name: "refresh_token")
+	String refreshToken;
+	String openid;
+	String scope;
+	String unionid;
+}

+ 36 - 0
lib/generated/json/access_bean_entity_helper.dart

@@ -0,0 +1,36 @@
+import 'package:bbyyy/beans/access_bean_entity.dart';
+
+accessBeanEntityFromJson(AccessBeanEntity data, Map<String, dynamic> json) {
+	if (json['access_token'] != null) {
+		data.accessToken = json['access_token'].toString();
+	}
+	if (json['expires_in'] != null) {
+		data.expiresIn = json['expires_in'] is String
+				? int.tryParse(json['expires_in'])
+				: json['expires_in'].toInt();
+	}
+	if (json['refresh_token'] != null) {
+		data.refreshToken = json['refresh_token'].toString();
+	}
+	if (json['openid'] != null) {
+		data.openid = json['openid'].toString();
+	}
+	if (json['scope'] != null) {
+		data.scope = json['scope'].toString();
+	}
+	if (json['unionid'] != null) {
+		data.unionid = json['unionid'].toString();
+	}
+	return data;
+}
+
+Map<String, dynamic> accessBeanEntityToJson(AccessBeanEntity entity) {
+	final Map<String, dynamic> data = new Map<String, dynamic>();
+	data['access_token'] = entity.accessToken;
+	data['expires_in'] = entity.expiresIn;
+	data['refresh_token'] = entity.refreshToken;
+	data['openid'] = entity.openid;
+	data['scope'] = entity.scope;
+	data['unionid'] = entity.unionid;
+	return data;
+}

+ 10 - 0
lib/generated/json/base/json_convert_content.dart

@@ -27,6 +27,8 @@ import 'package:bbyyy/beans/fixed_price_bean_entity.dart';
 import 'package:bbyyy/generated/json/fixed_price_bean_entity_helper.dart';
 import 'package:bbyyy/beans/pay_by_alipay_bean_entity.dart';
 import 'package:bbyyy/generated/json/pay_by_alipay_bean_entity_helper.dart';
+import 'package:bbyyy/beans/access_bean_entity.dart';
+import 'package:bbyyy/generated/json/access_bean_entity_helper.dart';
 import 'package:bbyyy/beans/user_vp_bean_entity.dart';
 import 'package:bbyyy/generated/json/user_vp_bean_entity_helper.dart';
 import 'package:bbyyy/beans/user_balance_entity.dart';
@@ -157,6 +159,8 @@ class JsonConvert<T> {
 				return fixedPriceBeanDataFromJson(data as FixedPriceBeanData, json) as T;
 			case PayByAlipayBeanEntity:
 				return payByAlipayBeanEntityFromJson(data as PayByAlipayBeanEntity, json) as T;
+			case AccessBeanEntity:
+				return accessBeanEntityFromJson(data as AccessBeanEntity, json) as T;
 			case UserVpBeanEntity:
 				return userVpBeanEntityFromJson(data as UserVpBeanEntity, json) as T;
 			case UserVpBeanData:
@@ -356,6 +360,8 @@ class JsonConvert<T> {
 				return fixedPriceBeanDataToJson(data as FixedPriceBeanData);
 			case PayByAlipayBeanEntity:
 				return payByAlipayBeanEntityToJson(data as PayByAlipayBeanEntity);
+			case AccessBeanEntity:
+				return accessBeanEntityToJson(data as AccessBeanEntity);
 			case UserVpBeanEntity:
 				return userVpBeanEntityToJson(data as UserVpBeanEntity);
 			case UserVpBeanData:
@@ -556,6 +562,8 @@ class JsonConvert<T> {
 			return FixedPriceBeanData().fromJson(json);
 		}	else if(type == (PayByAlipayBeanEntity).toString()){
 			return PayByAlipayBeanEntity().fromJson(json);
+		}	else if(type == (AccessBeanEntity).toString()){
+			return AccessBeanEntity().fromJson(json);
 		}	else if(type == (UserVpBeanEntity).toString()){
 			return UserVpBeanEntity().fromJson(json);
 		}	else if(type == (UserVpBeanData).toString()){
@@ -756,6 +764,8 @@ class JsonConvert<T> {
 			return data.map<FixedPriceBeanData>((e) => FixedPriceBeanData().fromJson(e)).toList() as M;
 		}	else if(<PayByAlipayBeanEntity>[] is M){
 			return data.map<PayByAlipayBeanEntity>((e) => PayByAlipayBeanEntity().fromJson(e)).toList() as M;
+		}	else if(<AccessBeanEntity>[] is M){
+			return data.map<AccessBeanEntity>((e) => AccessBeanEntity().fromJson(e)).toList() as M;
 		}	else if(<UserVpBeanEntity>[] is M){
 			return data.map<UserVpBeanEntity>((e) => UserVpBeanEntity().fromJson(e)).toList() as M;
 		}	else if(<UserVpBeanData>[] is M){

+ 39 - 0
lib/main.dart

@@ -4,6 +4,7 @@ import 'dart:io';
 
 import 'package:amap_location/amap_location.dart';
 import 'package:bbyyy/beans/template_bean_entity.dart';
+import 'package:bbyyy/beans/access_bean_entity.dart';
 import 'package:bbyyy/https/url.dart';
 import 'package:bbyyy/my_tools/event_bus.dart';
 import 'package:bbyyy/my_tools/my_cookie.dart';
@@ -13,6 +14,7 @@ import 'package:bbyyy/paegs/pay_page/order_information_page.dart';
 import 'package:bbyyy/paegs/root_page/root_page.dart';
 import 'package:bbyyy/paegs/root_page/root_page_view.dart';
 import 'package:bbyyy/paegs/welcome_page/welcome_page.dart';
+import 'package:dio/dio.dart';
 import 'package:flustars/flustars.dart';
 import 'package:flutter/cupertino.dart';
 import 'package:flutter/material.dart';
@@ -20,6 +22,7 @@ import 'package:flutter/services.dart';
 import 'package:flutter_local_notifications/flutter_local_notifications.dart';
 import 'package:flutter_localizations/flutter_localizations.dart';
 import 'package:flutter_svg/flutter_svg.dart';
+import 'package:fluwx/fluwx.dart';
 import 'package:pull_to_refresh/pull_to_refresh.dart';
 import 'package:rxdart/rxdart.dart';
 
@@ -65,6 +68,7 @@ Future<void> main() async {
   if (Platform.isIOS) {
     AMapLocationClient.setApiKey('548414a843a2ec9c383e34341b8c84df');
   }
+
   WidgetsFlutterBinding.ensureInitialized();
   const AndroidInitializationSettings initializationSettingsAndroid =
       AndroidInitializationSettings('@mipmap/app_logo');
@@ -118,6 +122,7 @@ class MyApp extends StatelessWidget with WidgetsBindingObserver {
     // TODO: implement createElement
     WidgetsBinding.instance.addObserver(this);
     MyCookie().initP();
+    // _initFluwx();
     EventBus().on('hasNewOrder', (arg) {
       newOrder = arg;
       displayPendingOrders();
@@ -1196,6 +1201,40 @@ class MyApp extends StatelessWidget with WidgetsBindingObserver {
       ),
     );
   }
+
+  // _initFluwx() async {
+  //   await registerWxApi(
+  //       appId: "wx8a5676abaee0a448",
+  //       doOnAndroid: true,
+  //       doOnIOS: true,
+  //       universalLink: "https://oms.kunyueyun.com/");
+  //   var result = await isWeChatInstalled;
+  //   print("is installed $result");
+  //   weChatResponseEventHandler.listen((res) {
+  //     if (res is WeChatPaymentResponse) {
+  //       // do something here
+  //     }
+  //     if(res is WeChatAuthResponse){
+  //       print('res.type----${res.type}');
+  //       print('res.country----${res.country}');
+  //       print('res.lang----${res.lang}');
+  //       print('res.code----${res.code}');
+  //       print('res.state----${res.state}');
+  //       Dio().get('https://api.weixin.qq.com/sns/oauth2/access_token?appid=$AppID&secret=$AppSecret&code=${res.code}&grant_type=authorization_code').then((value) {
+  //         print(value);
+  //         getWeChatInfo(value);
+  //       });
+  //     }
+  //   });
+  // }
+
+  //获取微信用户信息
+  void getWeChatInfo(Response value) {
+    AccessBeanEntity accessBeanEntity = AccessBeanEntity().fromJson(json.decode(value.toString()));
+    Dio().get('https://api.weixin.qq.com/sns/userinfo?access_token=${accessBeanEntity.accessToken}&openid=${accessBeanEntity.openid}').then((value) {
+      print(value);
+    });
+  }
 }
 
 class FallbackCupertinoLocalisationsDelegate

+ 3 - 0
lib/my_tools/const.dart

@@ -180,6 +180,9 @@ flowType(int type) {
 
 String appStoreID = '1562651088';
 
+const String AppID = 'wx8a5676abaee0a448';
+const String AppSecret = '80c86acf661ca834f4a5dc94ea4f3e77';
+
 //优惠券类型
 int couponTypeCash = 0; //现金券,可以支付任何订单
 int couponTypeConsumption = 1; //消费券,只能在公开店铺消费

+ 39 - 1
lib/my_tools/order.dart

@@ -1,4 +1,9 @@
 
+import 'dart:convert';
+import 'package:convert/convert.dart';
+import 'package:crypto/crypto.dart' as crypto;
+import 'package:crypto/crypto.dart';
+
 var tmpPaodekuai2 = '''{{#source#-跑得快
 房号:  #orderNo#   局数:  #dump#
 结束时间:   #orderTime#
@@ -354,6 +359,28 @@ List<OrderInfo2> parse2(Map<String, String> info) {
   return orders;
 }
 
+// String computeOrderHash(Map<String, String> order) {
+// //   order.remove("dump");
+// //   order.remove('orderTime');
+// //   var sortedKeys = order.keys.toList()..sort();
+// //   List values = new List();
+// //   sortedKeys.forEach((key) {
+// //     values.add(order[key]);
+// //   });
+// //   values.sort();
+// //   print( generateMd5(values.toString()));
+// //
+// //   return generateMd5(values.toString());
+// // }
+// //
+// //
+// // String generateMd5(String data) {
+// //   var content = new Utf8Encoder().convert(data);
+// //   var md5 = crypto.md5;
+// //   var digest = md5.convert(content);
+// //   return hex.encode(digest.bytes);
+// // }
+
 String computeOrderHash(Map<String, String> order) {
   order.remove("dump");
   order.remove('orderTime');
@@ -362,6 +389,17 @@ String computeOrderHash(Map<String, String> order) {
   sortedKeys.forEach((key) {
     values.add(order[key]);
   });
+  print('515151515151515${values.toString()}');
   values.sort();
-  return '${values.toString().hashCode}';
+  print('515151515151515${values.toString()}');
+  var md5 = generateMd5(values.toString());
+  print(md5);
+  return md5;
 }
+
+String generateMd5(String data) {
+  var content = new Utf8Encoder().convert(data);
+  // var md5 = crypto.md5;
+  var digest = md5.convert(content);
+  return hex.encode(digest.bytes);
+}

+ 132 - 125
pubspec.lock

@@ -5,217 +5,217 @@ packages:
     dependency: "direct main"
     description:
       name: address_picker
-      url: "https://pub.dartlang.org"
+      url: "https://pub.flutter-io.cn"
     source: hosted
     version: "0.0.1"
   amap_location:
     dependency: "direct main"
     description:
       name: amap_location
-      url: "https://pub.dartlang.org"
+      url: "https://pub.flutter-io.cn"
     source: hosted
     version: "0.2.0"
   archive:
     dependency: transitive
     description:
       name: archive
-      url: "https://pub.dartlang.org"
+      url: "https://pub.flutter-io.cn"
     source: hosted
     version: "3.1.2"
   async:
     dependency: transitive
     description:
       name: async
-      url: "https://pub.dartlang.org"
+      url: "https://pub.flutter-io.cn"
     source: hosted
     version: "2.5.0"
   audioplayers:
     dependency: "direct main"
     description:
       name: audioplayers
-      url: "https://pub.dartlang.org"
+      url: "https://pub.flutter-io.cn"
     source: hosted
     version: "0.18.3"
   azlistview:
     dependency: "direct main"
     description:
       name: azlistview
-      url: "https://pub.dartlang.org"
+      url: "https://pub.flutter-io.cn"
     source: hosted
     version: "1.1.1"
   badges:
     dependency: "direct main"
     description:
       name: badges
-      url: "https://pub.dartlang.org"
+      url: "https://pub.flutter-io.cn"
     source: hosted
     version: "1.2.0"
   boolean_selector:
     dependency: transitive
     description:
       name: boolean_selector
-      url: "https://pub.dartlang.org"
+      url: "https://pub.flutter-io.cn"
     source: hosted
     version: "2.1.0"
   cached_network_image:
     dependency: "direct main"
     description:
       name: cached_network_image
-      url: "https://pub.dartlang.org"
+      url: "https://pub.flutter-io.cn"
     source: hosted
     version: "3.0.0"
   catcher:
     dependency: "direct main"
     description:
       name: catcher
-      url: "https://pub.dartlang.org"
+      url: "https://pub.flutter-io.cn"
     source: hosted
     version: "0.6.6"
   characters:
     dependency: transitive
     description:
       name: characters
-      url: "https://pub.dartlang.org"
+      url: "https://pub.flutter-io.cn"
     source: hosted
     version: "1.1.0"
   charcode:
     dependency: transitive
     description:
       name: charcode
-      url: "https://pub.dartlang.org"
+      url: "https://pub.flutter-io.cn"
     source: hosted
     version: "1.2.0"
   clock:
     dependency: transitive
     description:
       name: clock
-      url: "https://pub.dartlang.org"
+      url: "https://pub.flutter-io.cn"
     source: hosted
     version: "1.1.0"
   collection:
     dependency: transitive
     description:
       name: collection
-      url: "https://pub.dartlang.org"
+      url: "https://pub.flutter-io.cn"
     source: hosted
     version: "1.15.0"
   common_utils:
     dependency: transitive
     description:
       name: common_utils
-      url: "https://pub.dartlang.org"
+      url: "https://pub.flutter-io.cn"
     source: hosted
     version: "1.2.4"
   convert:
     dependency: "direct main"
     description:
       name: convert
-      url: "https://pub.dartlang.org"
+      url: "https://pub.flutter-io.cn"
     source: hosted
     version: "2.1.1"
   crypto:
     dependency: "direct main"
     description:
       name: crypto
-      url: "https://pub.dartlang.org"
+      url: "https://pub.flutter-io.cn"
     source: hosted
     version: "3.0.1"
   cupertino_icons:
     dependency: "direct main"
     description:
       name: cupertino_icons
-      url: "https://pub.dartlang.org"
+      url: "https://pub.flutter-io.cn"
     source: hosted
     version: "1.0.3"
   decimal:
     dependency: transitive
     description:
       name: decimal
-      url: "https://pub.dartlang.org"
+      url: "https://pub.flutter-io.cn"
     source: hosted
     version: "1.1.0"
   device_info_plus:
     dependency: transitive
     description:
       name: device_info_plus
-      url: "https://pub.dartlang.org"
+      url: "https://pub.flutter-io.cn"
     source: hosted
     version: "1.0.1"
   device_info_plus_linux:
     dependency: transitive
     description:
       name: device_info_plus_linux
-      url: "https://pub.dartlang.org"
+      url: "https://pub.flutter-io.cn"
     source: hosted
     version: "1.0.1"
   device_info_plus_macos:
     dependency: transitive
     description:
       name: device_info_plus_macos
-      url: "https://pub.dartlang.org"
+      url: "https://pub.flutter-io.cn"
     source: hosted
     version: "1.0.1"
   device_info_plus_platform_interface:
     dependency: transitive
     description:
       name: device_info_plus_platform_interface
-      url: "https://pub.dartlang.org"
+      url: "https://pub.flutter-io.cn"
     source: hosted
     version: "1.0.2"
   device_info_plus_web:
     dependency: transitive
     description:
       name: device_info_plus_web
-      url: "https://pub.dartlang.org"
+      url: "https://pub.flutter-io.cn"
     source: hosted
     version: "1.0.1"
   device_info_plus_windows:
     dependency: transitive
     description:
       name: device_info_plus_windows
-      url: "https://pub.dartlang.org"
+      url: "https://pub.flutter-io.cn"
     source: hosted
     version: "1.0.1"
   dio:
     dependency: "direct main"
     description:
       name: dio
-      url: "https://pub.dartlang.org"
+      url: "https://pub.flutter-io.cn"
     source: hosted
     version: "4.0.0"
   disable_screenshots:
     dependency: "direct main"
     description:
       name: disable_screenshots
-      url: "https://pub.dartlang.org"
+      url: "https://pub.flutter-io.cn"
     source: hosted
     version: "0.1.0"
   fake_async:
     dependency: transitive
     description:
       name: fake_async
-      url: "https://pub.dartlang.org"
+      url: "https://pub.flutter-io.cn"
     source: hosted
     version: "1.2.0"
   ffi:
     dependency: transitive
     description:
       name: ffi
-      url: "https://pub.dartlang.org"
+      url: "https://pub.flutter-io.cn"
     source: hosted
     version: "1.1.0"
   file:
     dependency: transitive
     description:
       name: file
-      url: "https://pub.dartlang.org"
+      url: "https://pub.flutter-io.cn"
     source: hosted
     version: "6.1.1"
   flustars:
     dependency: "direct main"
     description:
       name: flustars
-      url: "https://pub.dartlang.org"
+      url: "https://pub.flutter-io.cn"
     source: hosted
     version: "0.3.3"
   flutter:
@@ -227,35 +227,35 @@ packages:
     dependency: transitive
     description:
       name: flutter_blurhash
-      url: "https://pub.dartlang.org"
+      url: "https://pub.flutter-io.cn"
     source: hosted
     version: "0.6.0"
   flutter_cache_manager:
     dependency: transitive
     description:
       name: flutter_cache_manager
-      url: "https://pub.dartlang.org"
+      url: "https://pub.flutter-io.cn"
     source: hosted
     version: "3.0.2"
   flutter_image_compress:
     dependency: "direct main"
     description:
       name: flutter_image_compress
-      url: "https://pub.dartlang.org"
+      url: "https://pub.flutter-io.cn"
     source: hosted
     version: "0.7.0"
   flutter_local_notifications:
     dependency: "direct main"
     description:
       name: flutter_local_notifications
-      url: "https://pub.dartlang.org"
+      url: "https://pub.flutter-io.cn"
     source: hosted
     version: "5.0.0+4"
   flutter_local_notifications_platform_interface:
     dependency: transitive
     description:
       name: flutter_local_notifications_platform_interface
-      url: "https://pub.dartlang.org"
+      url: "https://pub.flutter-io.cn"
     source: hosted
     version: "3.0.0"
   flutter_localizations:
@@ -267,42 +267,42 @@ packages:
     dependency: transitive
     description:
       name: flutter_mailer
-      url: "https://pub.dartlang.org"
+      url: "https://pub.flutter-io.cn"
     source: hosted
     version: "2.0.0"
   flutter_page_indicator:
     dependency: transitive
     description:
       name: flutter_page_indicator
-      url: "https://pub.dartlang.org"
+      url: "https://pub.flutter-io.cn"
     source: hosted
     version: "0.0.3"
   flutter_plugin_android_lifecycle:
     dependency: transitive
     description:
       name: flutter_plugin_android_lifecycle
-      url: "https://pub.dartlang.org"
+      url: "https://pub.flutter-io.cn"
     source: hosted
     version: "2.0.2"
   flutter_slidable:
     dependency: "direct main"
     description:
       name: flutter_slidable
-      url: "https://pub.dartlang.org"
+      url: "https://pub.flutter-io.cn"
     source: hosted
     version: "0.5.7"
   flutter_svg:
     dependency: "direct main"
     description:
       name: flutter_svg
-      url: "https://pub.dartlang.org"
+      url: "https://pub.flutter-io.cn"
     source: hosted
     version: "0.21.0+1"
   flutter_swiper:
     dependency: "direct main"
     description:
       name: flutter_swiper
-      url: "https://pub.dartlang.org"
+      url: "https://pub.flutter-io.cn"
     source: hosted
     version: "1.1.6"
   flutter_test:
@@ -319,399 +319,406 @@ packages:
     dependency: transitive
     description:
       name: fluttertoast
-      url: "https://pub.dartlang.org"
+      url: "https://pub.flutter-io.cn"
     source: hosted
     version: "8.0.7"
+  fluwx:
+    dependency: "direct main"
+    description:
+      name: fluwx
+      url: "https://pub.flutter-io.cn"
+    source: hosted
+    version: "3.4.2"
   http:
     dependency: transitive
     description:
       name: http
-      url: "https://pub.dartlang.org"
+      url: "https://pub.flutter-io.cn"
     source: hosted
     version: "0.13.3"
   http_parser:
     dependency: transitive
     description:
       name: http_parser
-      url: "https://pub.dartlang.org"
+      url: "https://pub.flutter-io.cn"
     source: hosted
     version: "4.0.0"
   image:
     dependency: transitive
     description:
       name: image
-      url: "https://pub.dartlang.org"
+      url: "https://pub.flutter-io.cn"
     source: hosted
     version: "3.0.2"
   image_cropper:
     dependency: "direct main"
     description:
       name: image_cropper
-      url: "https://pub.dartlang.org"
+      url: "https://pub.flutter-io.cn"
     source: hosted
     version: "1.4.0"
   image_picker:
     dependency: "direct main"
     description:
       name: image_picker
-      url: "https://pub.dartlang.org"
+      url: "https://pub.flutter-io.cn"
     source: hosted
     version: "0.7.5+3"
   image_picker_for_web:
     dependency: transitive
     description:
       name: image_picker_for_web
-      url: "https://pub.dartlang.org"
+      url: "https://pub.flutter-io.cn"
     source: hosted
     version: "2.0.0"
   image_picker_platform_interface:
     dependency: transitive
     description:
       name: image_picker_platform_interface
-      url: "https://pub.dartlang.org"
+      url: "https://pub.flutter-io.cn"
     source: hosted
     version: "2.1.0"
   install_plugin:
     dependency: "direct main"
     description:
       name: install_plugin
-      url: "https://pub.dartlang.org"
+      url: "https://pub.flutter-io.cn"
     source: hosted
     version: "2.0.1"
   intl:
     dependency: transitive
     description:
       name: intl
-      url: "https://pub.dartlang.org"
+      url: "https://pub.flutter-io.cn"
     source: hosted
     version: "0.17.0"
   js:
     dependency: transitive
     description:
       name: js
-      url: "https://pub.dartlang.org"
+      url: "https://pub.flutter-io.cn"
     source: hosted
     version: "0.6.3"
   launch_review:
     dependency: "direct main"
     description:
       name: launch_review
-      url: "https://pub.dartlang.org"
+      url: "https://pub.flutter-io.cn"
     source: hosted
     version: "3.0.1"
   logging:
     dependency: transitive
     description:
       name: logging
-      url: "https://pub.dartlang.org"
+      url: "https://pub.flutter-io.cn"
     source: hosted
     version: "1.0.1"
   lpinyin:
     dependency: "direct main"
     description:
       name: lpinyin
-      url: "https://pub.dartlang.org"
+      url: "https://pub.flutter-io.cn"
     source: hosted
     version: "2.0.3"
   mailer:
     dependency: transitive
     description:
       name: mailer
-      url: "https://pub.dartlang.org"
+      url: "https://pub.flutter-io.cn"
     source: hosted
     version: "5.0.0"
   matcher:
     dependency: transitive
     description:
       name: matcher
-      url: "https://pub.dartlang.org"
+      url: "https://pub.flutter-io.cn"
     source: hosted
     version: "0.12.10"
   meta:
     dependency: transitive
     description:
       name: meta
-      url: "https://pub.dartlang.org"
+      url: "https://pub.flutter-io.cn"
     source: hosted
     version: "1.3.0"
   mime:
     dependency: transitive
     description:
       name: mime
-      url: "https://pub.dartlang.org"
+      url: "https://pub.flutter-io.cn"
     source: hosted
     version: "1.0.0"
   octo_image:
     dependency: transitive
     description:
       name: octo_image
-      url: "https://pub.dartlang.org"
+      url: "https://pub.flutter-io.cn"
     source: hosted
     version: "1.0.0+1"
   package_info:
     dependency: "direct main"
     description:
       name: package_info
-      url: "https://pub.dartlang.org"
+      url: "https://pub.flutter-io.cn"
     source: hosted
     version: "0.4.3+4"
   package_info_plus:
     dependency: transitive
     description:
       name: package_info_plus
-      url: "https://pub.dartlang.org"
+      url: "https://pub.flutter-io.cn"
     source: hosted
     version: "1.0.1"
   package_info_plus_linux:
     dependency: transitive
     description:
       name: package_info_plus_linux
-      url: "https://pub.dartlang.org"
+      url: "https://pub.flutter-io.cn"
     source: hosted
     version: "1.0.2"
   package_info_plus_macos:
     dependency: transitive
     description:
       name: package_info_plus_macos
-      url: "https://pub.dartlang.org"
+      url: "https://pub.flutter-io.cn"
     source: hosted
     version: "1.1.1"
   package_info_plus_platform_interface:
     dependency: transitive
     description:
       name: package_info_plus_platform_interface
-      url: "https://pub.dartlang.org"
+      url: "https://pub.flutter-io.cn"
     source: hosted
     version: "1.0.1"
   package_info_plus_web:
     dependency: transitive
     description:
       name: package_info_plus_web
-      url: "https://pub.dartlang.org"
+      url: "https://pub.flutter-io.cn"
     source: hosted
     version: "1.0.1"
   package_info_plus_windows:
     dependency: transitive
     description:
       name: package_info_plus_windows
-      url: "https://pub.dartlang.org"
+      url: "https://pub.flutter-io.cn"
     source: hosted
     version: "1.0.1"
   path:
     dependency: transitive
     description:
       name: path
-      url: "https://pub.dartlang.org"
+      url: "https://pub.flutter-io.cn"
     source: hosted
     version: "1.8.0"
   path_drawing:
     dependency: transitive
     description:
       name: path_drawing
-      url: "https://pub.dartlang.org"
+      url: "https://pub.flutter-io.cn"
     source: hosted
     version: "0.5.1"
   path_parsing:
     dependency: transitive
     description:
       name: path_parsing
-      url: "https://pub.dartlang.org"
+      url: "https://pub.flutter-io.cn"
     source: hosted
     version: "0.2.1"
   path_provider:
     dependency: "direct main"
     description:
       name: path_provider
-      url: "https://pub.dartlang.org"
+      url: "https://pub.flutter-io.cn"
     source: hosted
     version: "2.0.2"
   path_provider_linux:
     dependency: transitive
     description:
       name: path_provider_linux
-      url: "https://pub.dartlang.org"
+      url: "https://pub.flutter-io.cn"
     source: hosted
     version: "2.0.0"
   path_provider_macos:
     dependency: transitive
     description:
       name: path_provider_macos
-      url: "https://pub.dartlang.org"
+      url: "https://pub.flutter-io.cn"
     source: hosted
     version: "2.0.0"
   path_provider_platform_interface:
     dependency: transitive
     description:
       name: path_provider_platform_interface
-      url: "https://pub.dartlang.org"
+      url: "https://pub.flutter-io.cn"
     source: hosted
     version: "2.0.1"
   path_provider_windows:
     dependency: transitive
     description:
       name: path_provider_windows
-      url: "https://pub.dartlang.org"
+      url: "https://pub.flutter-io.cn"
     source: hosted
     version: "2.0.1"
   pedantic:
     dependency: transitive
     description:
       name: pedantic
-      url: "https://pub.dartlang.org"
+      url: "https://pub.flutter-io.cn"
     source: hosted
     version: "1.11.0"
   permission_handler:
     dependency: "direct main"
     description:
       name: permission_handler
-      url: "https://pub.dartlang.org"
+      url: "https://pub.flutter-io.cn"
     source: hosted
     version: "6.1.3"
   permission_handler_platform_interface:
     dependency: transitive
     description:
       name: permission_handler_platform_interface
-      url: "https://pub.dartlang.org"
+      url: "https://pub.flutter-io.cn"
     source: hosted
     version: "3.5.0"
   petitparser:
     dependency: transitive
     description:
       name: petitparser
-      url: "https://pub.dartlang.org"
+      url: "https://pub.flutter-io.cn"
     source: hosted
     version: "4.1.0"
   platform:
     dependency: transitive
     description:
       name: platform
-      url: "https://pub.dartlang.org"
+      url: "https://pub.flutter-io.cn"
     source: hosted
     version: "3.0.0"
   plugin_platform_interface:
     dependency: transitive
     description:
       name: plugin_platform_interface
-      url: "https://pub.dartlang.org"
+      url: "https://pub.flutter-io.cn"
     source: hosted
     version: "2.0.0"
   process:
     dependency: transitive
     description:
       name: process
-      url: "https://pub.dartlang.org"
+      url: "https://pub.flutter-io.cn"
     source: hosted
     version: "4.2.1"
   pull_to_refresh:
     dependency: "direct main"
     description:
       name: pull_to_refresh
-      url: "https://pub.dartlang.org"
+      url: "https://pub.flutter-io.cn"
     source: hosted
     version: "1.6.5"
   qr:
     dependency: transitive
     description:
       name: qr
-      url: "https://pub.dartlang.org"
+      url: "https://pub.flutter-io.cn"
     source: hosted
     version: "2.0.0"
   qr_flutter:
     dependency: "direct main"
     description:
       name: qr_flutter
-      url: "https://pub.dartlang.org"
+      url: "https://pub.flutter-io.cn"
     source: hosted
     version: "4.0.0"
   rational:
     dependency: transitive
     description:
       name: rational
-      url: "https://pub.dartlang.org"
+      url: "https://pub.flutter-io.cn"
     source: hosted
     version: "1.1.0+1"
   rxdart:
     dependency: "direct main"
     description:
       name: rxdart
-      url: "https://pub.dartlang.org"
+      url: "https://pub.flutter-io.cn"
     source: hosted
     version: "0.26.0"
   scan:
     dependency: "direct main"
     description:
       name: scan
-      url: "https://pub.dartlang.org"
+      url: "https://pub.flutter-io.cn"
     source: hosted
     version: "1.4.3"
   scroll_to_index:
     dependency: "direct main"
     description:
       name: scroll_to_index
-      url: "https://pub.dartlang.org"
+      url: "https://pub.flutter-io.cn"
     source: hosted
     version: "1.0.6"
   scrollable_positioned_list:
     dependency: transitive
     description:
       name: scrollable_positioned_list
-      url: "https://pub.dartlang.org"
+      url: "https://pub.flutter-io.cn"
     source: hosted
     version: "0.1.10"
   sentry:
     dependency: transitive
     description:
       name: sentry
-      url: "https://pub.dartlang.org"
+      url: "https://pub.flutter-io.cn"
     source: hosted
     version: "5.0.0"
   shared_preferences:
     dependency: "direct main"
     description:
       name: shared_preferences
-      url: "https://pub.dartlang.org"
+      url: "https://pub.flutter-io.cn"
     source: hosted
     version: "2.0.6"
   shared_preferences_linux:
     dependency: transitive
     description:
       name: shared_preferences_linux
-      url: "https://pub.dartlang.org"
+      url: "https://pub.flutter-io.cn"
     source: hosted
     version: "2.0.0"
   shared_preferences_macos:
     dependency: transitive
     description:
       name: shared_preferences_macos
-      url: "https://pub.dartlang.org"
+      url: "https://pub.flutter-io.cn"
     source: hosted
     version: "2.0.0"
   shared_preferences_platform_interface:
     dependency: transitive
     description:
       name: shared_preferences_platform_interface
-      url: "https://pub.dartlang.org"
+      url: "https://pub.flutter-io.cn"
     source: hosted
     version: "2.0.0"
   shared_preferences_web:
     dependency: transitive
     description:
       name: shared_preferences_web
-      url: "https://pub.dartlang.org"
+      url: "https://pub.flutter-io.cn"
     source: hosted
     version: "2.0.0"
   shared_preferences_windows:
     dependency: transitive
     description:
       name: shared_preferences_windows
-      url: "https://pub.dartlang.org"
+      url: "https://pub.flutter-io.cn"
     source: hosted
     version: "2.0.0"
   simple_logger:
     dependency: "direct main"
     description:
       name: simple_logger
-      url: "https://pub.dartlang.org"
+      url: "https://pub.flutter-io.cn"
     source: hosted
     version: "1.8.0+1"
   sky_engine:
@@ -723,182 +730,182 @@ packages:
     dependency: transitive
     description:
       name: source_span
-      url: "https://pub.dartlang.org"
+      url: "https://pub.flutter-io.cn"
     source: hosted
     version: "1.8.0"
   sp_util:
     dependency: transitive
     description:
       name: sp_util
-      url: "https://pub.dartlang.org"
+      url: "https://pub.flutter-io.cn"
     source: hosted
     version: "2.0.3"
   sqflite:
     dependency: "direct main"
     description:
       name: sqflite
-      url: "https://pub.dartlang.org"
+      url: "https://pub.flutter-io.cn"
     source: hosted
     version: "2.0.0+3"
   sqflite_common:
     dependency: transitive
     description:
       name: sqflite_common
-      url: "https://pub.dartlang.org"
+      url: "https://pub.flutter-io.cn"
     source: hosted
     version: "2.0.0+2"
   stack_trace:
     dependency: transitive
     description:
       name: stack_trace
-      url: "https://pub.dartlang.org"
+      url: "https://pub.flutter-io.cn"
     source: hosted
     version: "1.10.0"
   stream_channel:
     dependency: transitive
     description:
       name: stream_channel
-      url: "https://pub.dartlang.org"
+      url: "https://pub.flutter-io.cn"
     source: hosted
     version: "2.1.0"
   string_scanner:
     dependency: transitive
     description:
       name: string_scanner
-      url: "https://pub.dartlang.org"
+      url: "https://pub.flutter-io.cn"
     source: hosted
     version: "1.1.0"
   synchronized:
     dependency: transitive
     description:
       name: synchronized
-      url: "https://pub.dartlang.org"
+      url: "https://pub.flutter-io.cn"
     source: hosted
     version: "3.0.0"
   term_glyph:
     dependency: transitive
     description:
       name: term_glyph
-      url: "https://pub.dartlang.org"
+      url: "https://pub.flutter-io.cn"
     source: hosted
     version: "1.2.0"
   test_api:
     dependency: transitive
     description:
       name: test_api
-      url: "https://pub.dartlang.org"
+      url: "https://pub.flutter-io.cn"
     source: hosted
     version: "0.2.19"
   timezone:
     dependency: transitive
     description:
       name: timezone
-      url: "https://pub.dartlang.org"
+      url: "https://pub.flutter-io.cn"
     source: hosted
     version: "0.7.0"
   tobias:
     dependency: "direct main"
     description:
       name: tobias
-      url: "https://pub.dartlang.org"
+      url: "https://pub.flutter-io.cn"
     source: hosted
     version: "2.1.0"
   transformer_page_view:
     dependency: transitive
     description:
       name: transformer_page_view
-      url: "https://pub.dartlang.org"
+      url: "https://pub.flutter-io.cn"
     source: hosted
     version: "0.1.6"
   typed_data:
     dependency: transitive
     description:
       name: typed_data
-      url: "https://pub.dartlang.org"
+      url: "https://pub.flutter-io.cn"
     source: hosted
     version: "1.3.0"
   universal_io:
     dependency: transitive
     description:
       name: universal_io
-      url: "https://pub.dartlang.org"
+      url: "https://pub.flutter-io.cn"
     source: hosted
     version: "2.0.4"
   url_launcher:
     dependency: "direct main"
     description:
       name: url_launcher
-      url: "https://pub.dartlang.org"
+      url: "https://pub.flutter-io.cn"
     source: hosted
     version: "6.0.4"
   url_launcher_linux:
     dependency: transitive
     description:
       name: url_launcher_linux
-      url: "https://pub.dartlang.org"
+      url: "https://pub.flutter-io.cn"
     source: hosted
     version: "2.0.0"
   url_launcher_macos:
     dependency: transitive
     description:
       name: url_launcher_macos
-      url: "https://pub.dartlang.org"
+      url: "https://pub.flutter-io.cn"
     source: hosted
     version: "2.0.0"
   url_launcher_platform_interface:
     dependency: transitive
     description:
       name: url_launcher_platform_interface
-      url: "https://pub.dartlang.org"
+      url: "https://pub.flutter-io.cn"
     source: hosted
     version: "2.0.3"
   url_launcher_web:
     dependency: transitive
     description:
       name: url_launcher_web
-      url: "https://pub.dartlang.org"
+      url: "https://pub.flutter-io.cn"
     source: hosted
     version: "2.0.0"
   url_launcher_windows:
     dependency: transitive
     description:
       name: url_launcher_windows
-      url: "https://pub.dartlang.org"
+      url: "https://pub.flutter-io.cn"
     source: hosted
     version: "2.0.0"
   uuid:
     dependency: "direct main"
     description:
       name: uuid
-      url: "https://pub.dartlang.org"
+      url: "https://pub.flutter-io.cn"
     source: hosted
     version: "3.0.4"
   vector_math:
     dependency: transitive
     description:
       name: vector_math
-      url: "https://pub.dartlang.org"
+      url: "https://pub.flutter-io.cn"
     source: hosted
     version: "2.1.0"
   win32:
     dependency: transitive
     description:
       name: win32
-      url: "https://pub.dartlang.org"
+      url: "https://pub.flutter-io.cn"
     source: hosted
     version: "2.0.5"
   xdg_directories:
     dependency: transitive
     description:
       name: xdg_directories
-      url: "https://pub.dartlang.org"
+      url: "https://pub.flutter-io.cn"
     source: hosted
     version: "0.2.0"
   xml:
     dependency: transitive
     description:
       name: xml
-      url: "https://pub.dartlang.org"
+      url: "https://pub.flutter-io.cn"
     source: hosted
     version: "5.1.1"
 sdks:

+ 2 - 1
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.95+1
+version: 1.0.96+1
 
 environment:
   sdk: ">=2.7.0 <3.0.0"
@@ -67,6 +67,7 @@ dependencies:
   qr_flutter: ^4.0.0
   scan: ^1.4.3
   address_picker: ^0.0.1
+  fluwx: ^3.4.2
 
 dev_dependencies:
   flutter_test: