huxiaoqiang 4 anni fa
parent
commit
e4c126e082

+ 12 - 0
lib/beans/home_carousel_bean_entity.dart

@@ -0,0 +1,12 @@
+import 'package:bbyyy/generated/json/base/json_convert_content.dart';
+
+class HomeCarouselBeanEntity with JsonConvert<HomeCarouselBeanEntity> {
+	List<HomeCarouselBeanData> data;
+	String error;
+}
+
+class HomeCarouselBeanData with JsonConvert<HomeCarouselBeanData> {
+	int id;
+	int page;
+	String path;
+}

+ 7 - 0
lib/beans/system_information_bean_entity.dart

@@ -1,6 +1,13 @@
 import 'package:bbyyy/generated/json/base/json_convert_content.dart';
+import 'package:bbyyy/generated/json/base/json_field.dart';
 
 class SystemInformationBeanEntity with JsonConvert<SystemInformationBeanEntity> {
 	String type;
+	SystemInformationBeanContent content;
+}
+
+class SystemInformationBeanContent with JsonConvert<SystemInformationBeanContent> {
+	@JSONField(name: "start_time")
+	String startTime;
 	String content;
 }

+ 13 - 0
lib/beans/system_information_bean_list_entity.dart

@@ -0,0 +1,13 @@
+import 'package:bbyyy/generated/json/base/json_convert_content.dart';
+import 'package:bbyyy/generated/json/base/json_field.dart';
+
+class SystemInformationBeanListEntity with JsonConvert<SystemInformationBeanListEntity> {
+	String type;
+	SystemInformationBeanListContent content;
+}
+
+class SystemInformationBeanListContent with JsonConvert<SystemInformationBeanListContent> {
+	@JSONField(name: "start_time")
+	String startTime;
+	String content;
+}

+ 45 - 1
lib/generated/json/base/json_convert_content.dart

@@ -45,6 +45,8 @@ import 'package:bbyyy/beans/offline_payment_bean_entity.dart';
 import 'package:bbyyy/generated/json/offline_payment_bean_entity_helper.dart';
 import 'package:bbyyy/beans/annual_fee_order_bean_entity.dart';
 import 'package:bbyyy/generated/json/annual_fee_order_bean_entity_helper.dart';
+import 'package:bbyyy/beans/home_carousel_bean_entity.dart';
+import 'package:bbyyy/generated/json/home_carousel_bean_entity_helper.dart';
 import 'package:bbyyy/beans/login_information_bean_entity.dart';
 import 'package:bbyyy/generated/json/login_information_bean_entity_helper.dart';
 import 'package:bbyyy/beans/my_shop_bean_entity.dart';
@@ -77,6 +79,8 @@ import 'package:bbyyy/beans/table_bean_entity.dart';
 import 'package:bbyyy/generated/json/table_bean_entity_helper.dart';
 import 'package:bbyyy/beans/user_balance_entity.dart';
 import 'package:bbyyy/generated/json/user_balance_entity_helper.dart';
+import 'package:bbyyy/beans/system_information_bean_list_entity.dart';
+import 'package:bbyyy/generated/json/system_information_bean_list_entity_helper.dart';
 
 class JsonConvert<T> {
 	T fromJson(Map<String, dynamic> json) {
@@ -161,6 +165,8 @@ class JsonConvert<T> {
 				return androidAppVersionBeanDataFromJson(data as AndroidAppVersionBeanData, json) as T;
 			case SystemInformationBeanEntity:
 				return systemInformationBeanEntityFromJson(data as SystemInformationBeanEntity, json) as T;
+			case SystemInformationBeanContent:
+				return systemInformationBeanContentFromJson(data as SystemInformationBeanContent, json) as T;
 			case VpPricingBeanEntity:
 				return vpPricingBeanEntityFromJson(data as VpPricingBeanEntity, json) as T;
 			case VpPricingBeanData:
@@ -173,6 +179,10 @@ class JsonConvert<T> {
 				return annualFeeOrderBeanEntityFromJson(data as AnnualFeeOrderBeanEntity, json) as T;
 			case AnnualFeeOrderBeanData:
 				return annualFeeOrderBeanDataFromJson(data as AnnualFeeOrderBeanData, json) as T;
+			case HomeCarouselBeanEntity:
+				return homeCarouselBeanEntityFromJson(data as HomeCarouselBeanEntity, json) as T;
+			case HomeCarouselBeanData:
+				return homeCarouselBeanDataFromJson(data as HomeCarouselBeanData, json) as T;
 			case LoginInformationBeanEntity:
 				return loginInformationBeanEntityFromJson(data as LoginInformationBeanEntity, json) as T;
 			case LoginInformationBeanData:
@@ -250,7 +260,11 @@ class JsonConvert<T> {
 			case TableBeanEntity:
 				return tableBeanEntityFromJson(data as TableBeanEntity, json) as T;
 			case UserBalanceEntity:
-				return userBalanceEntityFromJson(data as UserBalanceEntity, json) as T;    }
+				return userBalanceEntityFromJson(data as UserBalanceEntity, json) as T;
+			case SystemInformationBeanListEntity:
+				return systemInformationBeanListEntityFromJson(data as SystemInformationBeanListEntity, json) as T;
+			case SystemInformationBeanListContent:
+				return systemInformationBeanListContentFromJson(data as SystemInformationBeanListContent, json) as T;    }
     return data as T;
   }
 
@@ -328,6 +342,8 @@ class JsonConvert<T> {
 				return androidAppVersionBeanDataToJson(data as AndroidAppVersionBeanData);
 			case SystemInformationBeanEntity:
 				return systemInformationBeanEntityToJson(data as SystemInformationBeanEntity);
+			case SystemInformationBeanContent:
+				return systemInformationBeanContentToJson(data as SystemInformationBeanContent);
 			case VpPricingBeanEntity:
 				return vpPricingBeanEntityToJson(data as VpPricingBeanEntity);
 			case VpPricingBeanData:
@@ -340,6 +356,10 @@ class JsonConvert<T> {
 				return annualFeeOrderBeanEntityToJson(data as AnnualFeeOrderBeanEntity);
 			case AnnualFeeOrderBeanData:
 				return annualFeeOrderBeanDataToJson(data as AnnualFeeOrderBeanData);
+			case HomeCarouselBeanEntity:
+				return homeCarouselBeanEntityToJson(data as HomeCarouselBeanEntity);
+			case HomeCarouselBeanData:
+				return homeCarouselBeanDataToJson(data as HomeCarouselBeanData);
 			case LoginInformationBeanEntity:
 				return loginInformationBeanEntityToJson(data as LoginInformationBeanEntity);
 			case LoginInformationBeanData:
@@ -418,6 +438,10 @@ class JsonConvert<T> {
 				return tableBeanEntityToJson(data as TableBeanEntity);
 			case UserBalanceEntity:
 				return userBalanceEntityToJson(data as UserBalanceEntity);
+			case SystemInformationBeanListEntity:
+				return systemInformationBeanListEntityToJson(data as SystemInformationBeanListEntity);
+			case SystemInformationBeanListContent:
+				return systemInformationBeanListContentToJson(data as SystemInformationBeanListContent);
 			}
 			return data as T;
 		}
@@ -496,6 +520,8 @@ class JsonConvert<T> {
 			return AndroidAppVersionBeanData().fromJson(json);
 		}	else if(type == (SystemInformationBeanEntity).toString()){
 			return SystemInformationBeanEntity().fromJson(json);
+		}	else if(type == (SystemInformationBeanContent).toString()){
+			return SystemInformationBeanContent().fromJson(json);
 		}	else if(type == (VpPricingBeanEntity).toString()){
 			return VpPricingBeanEntity().fromJson(json);
 		}	else if(type == (VpPricingBeanData).toString()){
@@ -508,6 +534,10 @@ class JsonConvert<T> {
 			return AnnualFeeOrderBeanEntity().fromJson(json);
 		}	else if(type == (AnnualFeeOrderBeanData).toString()){
 			return AnnualFeeOrderBeanData().fromJson(json);
+		}	else if(type == (HomeCarouselBeanEntity).toString()){
+			return HomeCarouselBeanEntity().fromJson(json);
+		}	else if(type == (HomeCarouselBeanData).toString()){
+			return HomeCarouselBeanData().fromJson(json);
 		}	else if(type == (LoginInformationBeanEntity).toString()){
 			return LoginInformationBeanEntity().fromJson(json);
 		}	else if(type == (LoginInformationBeanData).toString()){
@@ -586,6 +616,10 @@ class JsonConvert<T> {
 			return TableBeanEntity().fromJson(json);
 		}	else if(type == (UserBalanceEntity).toString()){
 			return UserBalanceEntity().fromJson(json);
+		}	else if(type == (SystemInformationBeanListEntity).toString()){
+			return SystemInformationBeanListEntity().fromJson(json);
+		}	else if(type == (SystemInformationBeanListContent).toString()){
+			return SystemInformationBeanListContent().fromJson(json);
 		}	
 		return null;
 	}
@@ -664,6 +698,8 @@ class JsonConvert<T> {
 			return data.map<AndroidAppVersionBeanData>((e) => AndroidAppVersionBeanData().fromJson(e)).toList() as M;
 		}	else if(<SystemInformationBeanEntity>[] is M){
 			return data.map<SystemInformationBeanEntity>((e) => SystemInformationBeanEntity().fromJson(e)).toList() as M;
+		}	else if(<SystemInformationBeanContent>[] is M){
+			return data.map<SystemInformationBeanContent>((e) => SystemInformationBeanContent().fromJson(e)).toList() as M;
 		}	else if(<VpPricingBeanEntity>[] is M){
 			return data.map<VpPricingBeanEntity>((e) => VpPricingBeanEntity().fromJson(e)).toList() as M;
 		}	else if(<VpPricingBeanData>[] is M){
@@ -676,6 +712,10 @@ class JsonConvert<T> {
 			return data.map<AnnualFeeOrderBeanEntity>((e) => AnnualFeeOrderBeanEntity().fromJson(e)).toList() as M;
 		}	else if(<AnnualFeeOrderBeanData>[] is M){
 			return data.map<AnnualFeeOrderBeanData>((e) => AnnualFeeOrderBeanData().fromJson(e)).toList() as M;
+		}	else if(<HomeCarouselBeanEntity>[] is M){
+			return data.map<HomeCarouselBeanEntity>((e) => HomeCarouselBeanEntity().fromJson(e)).toList() as M;
+		}	else if(<HomeCarouselBeanData>[] is M){
+			return data.map<HomeCarouselBeanData>((e) => HomeCarouselBeanData().fromJson(e)).toList() as M;
 		}	else if(<LoginInformationBeanEntity>[] is M){
 			return data.map<LoginInformationBeanEntity>((e) => LoginInformationBeanEntity().fromJson(e)).toList() as M;
 		}	else if(<LoginInformationBeanData>[] is M){
@@ -754,6 +794,10 @@ class JsonConvert<T> {
 			return data.map<TableBeanEntity>((e) => TableBeanEntity().fromJson(e)).toList() as M;
 		}	else if(<UserBalanceEntity>[] is M){
 			return data.map<UserBalanceEntity>((e) => UserBalanceEntity().fromJson(e)).toList() as M;
+		}	else if(<SystemInformationBeanListEntity>[] is M){
+			return data.map<SystemInformationBeanListEntity>((e) => SystemInformationBeanListEntity().fromJson(e)).toList() as M;
+		}	else if(<SystemInformationBeanListContent>[] is M){
+			return data.map<SystemInformationBeanListContent>((e) => SystemInformationBeanListContent().fromJson(e)).toList() as M;
 		}
 		throw Exception("not fond");
 	}

+ 43 - 0
lib/generated/json/home_carousel_bean_entity_helper.dart

@@ -0,0 +1,43 @@
+import 'package:bbyyy/beans/home_carousel_bean_entity.dart';
+
+homeCarouselBeanEntityFromJson(HomeCarouselBeanEntity data, Map<String, dynamic> json) {
+	if (json['data'] != null) {
+		data.data = (json['data'] as List).map((v) => HomeCarouselBeanData().fromJson(v)).toList();
+	}
+	if (json['error'] != null) {
+		data.error = json['error'].toString();
+	}
+	return data;
+}
+
+Map<String, dynamic> homeCarouselBeanEntityToJson(HomeCarouselBeanEntity entity) {
+	final Map<String, dynamic> data = new Map<String, dynamic>();
+	data['data'] =  entity.data?.map((v) => v.toJson())?.toList();
+	data['error'] = entity.error;
+	return data;
+}
+
+homeCarouselBeanDataFromJson(HomeCarouselBeanData data, Map<String, dynamic> json) {
+	if (json['id'] != null) {
+		data.id = json['id'] is String
+				? int.tryParse(json['id'])
+				: json['id'].toInt();
+	}
+	if (json['page'] != null) {
+		data.page = json['page'] is String
+				? int.tryParse(json['page'])
+				: json['page'].toInt();
+	}
+	if (json['path'] != null) {
+		data.path = json['path'].toString();
+	}
+	return data;
+}
+
+Map<String, dynamic> homeCarouselBeanDataToJson(HomeCarouselBeanData entity) {
+	final Map<String, dynamic> data = new Map<String, dynamic>();
+	data['id'] = entity.id;
+	data['page'] = entity.page;
+	data['path'] = entity.path;
+	return data;
+}

+ 18 - 1
lib/generated/json/system_information_bean_entity_helper.dart

@@ -5,7 +5,7 @@ systemInformationBeanEntityFromJson(SystemInformationBeanEntity data, Map<String
 		data.type = json['type'].toString();
 	}
 	if (json['content'] != null) {
-		data.content = json['content'].toString();
+		data.content = SystemInformationBeanContent().fromJson(json['content']);
 	}
 	return data;
 }
@@ -13,6 +13,23 @@ systemInformationBeanEntityFromJson(SystemInformationBeanEntity data, Map<String
 Map<String, dynamic> systemInformationBeanEntityToJson(SystemInformationBeanEntity entity) {
 	final Map<String, dynamic> data = new Map<String, dynamic>();
 	data['type'] = entity.type;
+	data['content'] = entity.content?.toJson();
+	return data;
+}
+
+systemInformationBeanContentFromJson(SystemInformationBeanContent data, Map<String, dynamic> json) {
+	if (json['start_time'] != null) {
+		data.startTime = json['start_time'].toString();
+	}
+	if (json['content'] != null) {
+		data.content = json['content'].toString();
+	}
+	return data;
+}
+
+Map<String, dynamic> systemInformationBeanContentToJson(SystemInformationBeanContent entity) {
+	final Map<String, dynamic> data = new Map<String, dynamic>();
+	data['start_time'] = entity.startTime;
 	data['content'] = entity.content;
 	return data;
 }

+ 35 - 0
lib/generated/json/system_information_bean_list_entity_helper.dart

@@ -0,0 +1,35 @@
+import 'package:bbyyy/beans/system_information_bean_list_entity.dart';
+
+systemInformationBeanListEntityFromJson(SystemInformationBeanListEntity data, Map<String, dynamic> json) {
+	if (json['type'] != null) {
+		data.type = json['type'].toString();
+	}
+	if (json['content'] != null) {
+		data.content = SystemInformationBeanListContent().fromJson(json['content']);
+	}
+	return data;
+}
+
+Map<String, dynamic> systemInformationBeanListEntityToJson(SystemInformationBeanListEntity entity) {
+	final Map<String, dynamic> data = new Map<String, dynamic>();
+	data['type'] = entity.type;
+	data['content'] = entity.content?.toJson();
+	return data;
+}
+
+systemInformationBeanListContentFromJson(SystemInformationBeanListContent data, Map<String, dynamic> json) {
+	if (json['start_time'] != null) {
+		data.startTime = json['start_time'].toString();
+	}
+	if (json['content'] != null) {
+		data.content = json['content'].toString();
+	}
+	return data;
+}
+
+Map<String, dynamic> systemInformationBeanListContentToJson(SystemInformationBeanListContent entity) {
+	final Map<String, dynamic> data = new Map<String, dynamic>();
+	data['start_time'] = entity.startTime;
+	data['content'] = entity.content;
+	return data;
+}

+ 21 - 2
lib/https/my_request.dart

@@ -3,12 +3,13 @@ import 'dart:io';
 
 import 'package:bbyyy/beans/android_app_version_bean_entity.dart';
 import 'package:bbyyy/beans/store_bean_entity.dart';
+import 'package:bbyyy/my_tools/event_bus.dart';
 import 'package:bbyyy/my_tools/my_cookie.dart';
 import 'package:bbyyy/my_tools/my_tools.dart';
 import 'package:bbyyy/my_tools/my_views.dart';
 import 'package:dio/dio.dart';
 import 'package:flutter/material.dart';
-
+import 'package:bbyyy/beans/home_carousel_bean_entity.dart';
 import 'MyDio.dart';
 
 //上传文件
@@ -97,7 +98,7 @@ revokePayOrder(int orderUID) {
 }
 
 //检查更新
-checkForUpdates(BuildContext context) {
+checkForUpdates(BuildContext context,{bool showT = false}) {
   //TODO:
   MyDio().query({
     "key": "android_app",
@@ -112,6 +113,10 @@ checkForUpdates(BuildContext context) {
       if (entity.data[0].version.compareTo(MyCookie().packageInfo.version) ==
           1) {
         updateDialog(entity.data[0], context);
+      } else {
+       if(showT){
+         showToast('当前已是最新版本');
+       }
       }
     }
   }, (error) {});
@@ -125,3 +130,17 @@ advertisingPricing(SCallBack sCallBack) {
     "filters": {}
   }, sCallBack, (error) {});
 }
+
+//首页轮播
+homeCarousel() {
+  MyDio().query({
+    "key": "carousel",
+    "dims": ["id", "page", "path"],
+    "filters": {'conditions':['page == 1']}
+  }, (response, hasError) {
+    if(!hasError){
+      HomeCarouselBeanEntity entity = HomeCarouselBeanEntity().fromJson(json.decode(response.data.toString()));
+      EventBus().emit('homeCarousel',entity);
+    }
+  }, (error) {});
+}

+ 1 - 1
lib/main.dart

@@ -1023,7 +1023,7 @@ class MyApp extends StatelessWidget with WidgetsBindingObserver {
                     ),
                     Container(
                       child: Text(
-                        arg.content,
+                        arg.content.content,
                         style: TextStyle(color: MyColors.c333333, fontSize: 14),
                       ),
                       margin: EdgeInsets.symmetric(horizontal: 26),

+ 2 - 0
lib/my_tools/const.dart

@@ -162,3 +162,5 @@ flowType(int type) {
       return '';
   }
 }
+
+String appStoreID = '1562651088';

+ 2 - 2
lib/my_tools/my_cookie.dart

@@ -19,9 +19,9 @@ class MyCookie {
   //工厂构造函数
   factory MyCookie() => _singleton;
 
-  // String server = '172.16.104.14';
+  String server = '172.16.104.14';
   // String server = '39.108.225.84';
-  String server = 'bby.banghuo.net';
+  // String server = 'bby.banghuo.net';
   SharedPreferences prefs;
   PackageInfo packageInfo;
   UserBeanDataData userBean;

+ 206 - 159
lib/my_tools/my_views.dart

@@ -34,6 +34,7 @@ import 'package:flutter/material.dart';
 import 'package:flutter/services.dart';
 import 'package:flutter_svg/svg.dart';
 import 'package:install_plugin/install_plugin.dart';
+import 'package:launch_review/launch_review.dart';
 import 'package:lpinyin/lpinyin.dart';
 import 'package:path_provider/path_provider.dart';
 
@@ -2351,175 +2352,221 @@ updateDialog(AndroidAppVersionBeanData data, BuildContext context) {
   showDialog(
     context: context,
     builder: (BuildContext context) {
-      return StreamBuilder<Object>(builder: (context, snapshot) {
-        return Material(
-          color: Colors.black12,
-          child: Center(
-            child: Container(
-              decoration: BoxDecoration(
-                borderRadius: BorderRadius.circular(16),
-                color: Colors.white,
-              ),
-              height: 165,
-              margin: EdgeInsets.symmetric(horizontal: 18),
-              padding: EdgeInsets.symmetric(horizontal: 8, vertical: 12),
-              child: StatefulBuilder(
-                builder: (BuildContext context,
-                    void Function(void Function()) setState) {
-                  EventBus().on('更新进度条', (arg) {
-                    p = arg;
-                    setState(() {});
-                  });
-                  EventBus().on('允许安装', (arg) {
-                    downloadCompleted = true;
-                    filePath = arg;
-                    setState(() {});
-                  });
-                  if (startUpdate) {
-                    return Column(
-                      children: [
-                        Container(
-                          height: 88,
-                          child: Column(
-                            children: [
-                              Container(
-                                child: MyViews()
-                                    .myText('更新中...', MyColors.c333333, 16),
-                              ),
-                              SizedBox(
-                                height: 15,
-                                child: ClipRRect(
-                                  borderRadius: BorderRadius.circular(7.5),
-                                  child: LinearProgressIndicator(
-                                    backgroundColor: Colors.grey[200],
-                                    valueColor: AlwaysStoppedAnimation(
-                                        MyColors.cFF4233),
-                                    value: downloadCompleted
-                                        ? 1
-                                        : NumUtil.divide(p, 100),
+      return WillPopScope(
+        onWillPop: () {
+          return Future.value(false);
+        },
+        child: StreamBuilder<Object>(builder: (context, snapshot) {
+          return Material(
+            color: Colors.black12,
+            child: Center(
+              child: Container(
+                decoration: BoxDecoration(
+                  borderRadius: BorderRadius.circular(16),
+                  color: Colors.white,
+                ),
+                height: 165,
+                margin: EdgeInsets.symmetric(horizontal: 18),
+                padding: EdgeInsets.symmetric(horizontal: 8, vertical: 12),
+                child: StatefulBuilder(
+                  builder: (BuildContext context,
+                      void Function(void Function()) setState) {
+                    EventBus().on('更新进度条', (arg) {
+                      p = arg;
+                      setState(() {});
+                    });
+                    EventBus().on('允许安装', (arg) {
+                      downloadCompleted = true;
+                      filePath = arg;
+                      setState(() {});
+                    });
+                    if (startUpdate) {
+                      return Column(
+                        children: [
+                          Container(
+                            height: 88,
+                            child: Column(
+                              children: [
+                                Container(
+                                  child: MyViews()
+                                      .myText('更新中...', MyColors.c333333, 16),
+                                ),
+                                SizedBox(
+                                  height: 15,
+                                  child: ClipRRect(
+                                    borderRadius: BorderRadius.circular(7.5),
+                                    child: LinearProgressIndicator(
+                                      backgroundColor: Colors.grey[200],
+                                      valueColor: AlwaysStoppedAnimation(
+                                          MyColors.cFF4233),
+                                      value: downloadCompleted
+                                          ? 1
+                                          : NumUtil.divide(p, 100),
+                                    ),
                                   ),
                                 ),
-                              ),
-                            ],
-                            mainAxisAlignment: MainAxisAlignment.spaceAround,
+                              ],
+                              mainAxisAlignment: MainAxisAlignment.spaceAround,
+                            ),
                           ),
-                        ),
-                        Container(
-                          height: 0.5,
-                          color: MyColors.cE7E7E7,
-                          margin: EdgeInsets.only(bottom: 12),
-                        ),
-                        Container(
-                          margin: EdgeInsets.symmetric(horizontal: 20),
-                          child: GestureDetector(
-                            behavior: HitTestBehavior.translucent,
-                            onTap: () {
-                              if (downloadCompleted) {
-                                installApk(filePath);
-                              }
-                            },
-                            child: Container(
-                              decoration: BoxDecoration(
-                                  borderRadius: BorderRadius.circular(20),
-                                  color: downloadCompleted
-                                      ? MyColors.cFF4233
-                                      : MyColors.c999999),
-                              height: 40,
-                              child: MyViews().myText('安装', Colors.white, 14),
-                              alignment: Alignment.center,
+                          Container(
+                            height: 0.5,
+                            color: MyColors.cE7E7E7,
+                            margin: EdgeInsets.only(bottom: 12),
+                          ),
+                          Container(
+                            margin: EdgeInsets.symmetric(horizontal: 20),
+                            child: GestureDetector(
+                              behavior: HitTestBehavior.translucent,
+                              onTap: () {
+                                if (downloadCompleted) {
+                                  installApk(filePath);
+                                }
+                              },
+                              child: Container(
+                                decoration: BoxDecoration(
+                                    borderRadius: BorderRadius.circular(20),
+                                    color: downloadCompleted
+                                        ? MyColors.cFF4233
+                                        : MyColors.c999999),
+                                height: 40,
+                                child: MyViews().myText('安装', Colors.white, 14),
+                                alignment: Alignment.center,
+                              ),
                             ),
+                          )
+                        ],
+                        mainAxisAlignment: MainAxisAlignment.center,
+                      );
+                    } else {
+                      return Column(
+                        children: [
+                          Container(
+                            height: 88,
+                            child: MyViews().myText(
+                                data.force
+                                    ? '检查到新版本(v${data.version}),请更新'
+                                    : '检查到新版本(v${data.version}),请问是否更新',
+                                MyColors.c333333,
+                                14),
+                            margin: EdgeInsets.symmetric(horizontal: 20),
+                            alignment: Alignment.center,
                           ),
-                        )
-                      ],
-                      mainAxisAlignment: MainAxisAlignment.center,
-                    );
-                  } else {
-                    return Column(
-                      children: [
-                        Container(
-                          height: 88,
-                          child: MyViews().myText(
-                              data.force ? '检查到新版本,请更新' : '检查到新版本,请问是否更新',
-                              MyColors.c333333,
-                              14),
-                          margin: EdgeInsets.symmetric(horizontal: 20),
-                          alignment: Alignment.center,
-                        ),
-                        Container(
-                          height: 0.5,
-                          color: MyColors.cE7E7E7,
-                          margin: EdgeInsets.only(bottom: 12),
-                        ),
-                        Container(
-                          margin: EdgeInsets.symmetric(horizontal: 10),
-                          child: Row(
-                            children: [
-                              Expanded(
-                                child: GestureDetector(
-                                  onTap: () {
-                                    if (data.force) {
-                                      EventBus().off('允许安装');
-                                      EventBus().off('更新进度条');
-                                      SystemNavigator.pop();
-                                    } else {
-                                      EventBus().off('允许安装');
-                                      EventBus().off('更新进度条');
-                                      Navigator.pop(context);
-                                    }
-                                  },
-                                  behavior: HitTestBehavior.translucent,
-                                  child: Container(
-                                    decoration: BoxDecoration(
-                                        borderRadius: BorderRadius.only(
-                                          topLeft: Radius.circular(20),
-                                          bottomLeft: Radius.circular(20),
-                                        ),
-                                        border: Border.all(
-                                            color: MyColors.cFF4233,
-                                            width: 1.1),
-                                        color: Colors.white),
-                                    child: MyViews()
-                                        .myText('暂不更新', MyColors.cFF4233, 14),
-                                    height: 40,
-                                    alignment: Alignment.center,
+                          Container(
+                            height: 0.5,
+                            color: MyColors.cE7E7E7,
+                            margin: EdgeInsets.only(bottom: 12),
+                          ),
+                          data.force
+                              ? Container(
+                                  margin: EdgeInsets.symmetric(horizontal: 10),
+                                  child: Expanded(
+                                    child: GestureDetector(
+                                      behavior: HitTestBehavior.translucent,
+                                      onTap: () {
+                                        if (Platform.isAndroid) {
+                                          downloadAPK(data, context);
+                                          startUpdate = true;
+                                          setState(() {});
+                                        } else if (Platform.isIOS) {
+                                          LaunchReview.launch(
+                                              iOSAppId: appStoreID);
+                                        } else {
+                                          Navigator.pop(context);
+                                        }
+                                      },
+                                      child: Container(
+                                        decoration: BoxDecoration(
+                                            borderRadius:
+                                                BorderRadius.circular(20),
+                                            color: MyColors.cFF4233),
+                                        height: 40,
+                                        child: MyViews()
+                                            .myText('立即更新', Colors.white, 14),
+                                        alignment: Alignment.center,
+                                      ),
+                                    ),
                                   ),
-                                ),
-                              ),
-                              Expanded(
-                                child: GestureDetector(
-                                  behavior: HitTestBehavior.translucent,
-                                  onTap: () {
-                                    downloadAPK(data, context);
-                                    startUpdate = true;
-                                    setState(() {});
-                                  },
-                                  child: Container(
-                                    decoration: BoxDecoration(
-                                        borderRadius: BorderRadius.only(
-                                          topRight: Radius.circular(20),
-                                          bottomRight: Radius.circular(20),
+                                )
+                              : Container(
+                                  margin: EdgeInsets.symmetric(horizontal: 10),
+                                  child: Row(
+                                    children: [
+                                      Expanded(
+                                        child: GestureDetector(
+                                          onTap: () {
+                                            if (data.force) {
+                                              EventBus().off('允许安装');
+                                              EventBus().off('更新进度条');
+                                              SystemNavigator.pop();
+                                            } else {
+                                              EventBus().off('允许安装');
+                                              EventBus().off('更新进度条');
+                                              Navigator.pop(context);
+                                            }
+                                          },
+                                          behavior: HitTestBehavior.translucent,
+                                          child: Container(
+                                            decoration: BoxDecoration(
+                                                borderRadius: BorderRadius.only(
+                                                  topLeft: Radius.circular(20),
+                                                  bottomLeft: Radius.circular(20),
+                                                ),
+                                                border: Border.all(
+                                                    color: MyColors.cFF4233,
+                                                    width: 1.1),
+                                                color: Colors.white),
+                                            child: MyViews().myText(
+                                                '暂不更新', MyColors.cFF4233, 14),
+                                            height: 40,
+                                            alignment: Alignment.center,
+                                          ),
                                         ),
-                                        color: MyColors.cFF4233),
-                                    height: 40,
-                                    child: MyViews()
-                                        .myText('立即更新', Colors.white, 14),
-                                    alignment: Alignment.center,
+                                      ),
+                                      Expanded(
+                                        child: GestureDetector(
+                                          behavior: HitTestBehavior.translucent,
+                                          onTap: () {
+                                            if (Platform.isAndroid) {
+                                              downloadAPK(data, context);
+                                              startUpdate = true;
+                                              setState(() {});
+                                            } else if (Platform.isIOS) {
+                                              LaunchReview.launch(
+                                                  iOSAppId: appStoreID);
+                                            } else {
+                                              Navigator.pop(context);
+                                            }
+                                          },
+                                          child: Container(
+                                            decoration: BoxDecoration(
+                                                borderRadius: BorderRadius.only(
+                                                  topRight: Radius.circular(20),
+                                                  bottomRight:
+                                                      Radius.circular(20),
+                                                ),
+                                                color: MyColors.cFF4233),
+                                            height: 40,
+                                            child: MyViews()
+                                                .myText('立即更新', Colors.white, 14),
+                                            alignment: Alignment.center,
+                                          ),
+                                        ),
+                                      )
+                                    ],
                                   ),
-                                ),
-                              )
-                            ],
-                          ),
-                        )
-                      ],
-                      mainAxisAlignment: MainAxisAlignment.spaceBetween,
-                    );
-                  }
-                },
+                                )
+                        ],
+                        mainAxisAlignment: MainAxisAlignment.spaceBetween,
+                      );
+                    }
+                  },
+                ),
               ),
             ),
-          ),
-        );
-      });
+          );
+        }),
+      );
     },
   );
 }

+ 10 - 2
lib/nsq/nsq.dart

@@ -78,9 +78,17 @@ Future<void> handlerMessage(Message message) async {
       SystemInformationBeanEntity entity = SystemInformationBeanEntity().fromJson(json.decode(utf8.decode(message.Body)));
       String systemInformation = MyCookie().prefs.getString('${MyCookie().getUID()}系统消息');
       if(systemInformation==null){
-        MyCookie().prefs.setString('${MyCookie().getUID()}系统消息', entity.content);
+        List <SystemInformationBeanEntity> sI = [];
+        sI.add(entity);
+        MyCookie().prefs.setString('${MyCookie().getUID()}系统消息', json.encode(sI));
       }else{
-        MyCookie().prefs.setString('${MyCookie().getUID()}系统消息', '${entity.content}!@##@!$systemInformation');
+        List <SystemInformationBeanEntity> sI = [];
+        List sL = json.decode(systemInformation);
+        sL.forEach((element) {
+          sI.add(SystemInformationBeanEntity().fromJson(json.decode(json.encode(element))));
+        });
+        sI.insert(0, entity);
+        MyCookie().prefs.setString('${MyCookie().getUID()}系统消息', json.encode(sI));
       }
       EventBus().emit('systemInformation',entity);
     }

+ 25 - 7
lib/paegs/home_page/home_page.dart

@@ -4,10 +4,12 @@ import 'dart:convert';
 import 'package:bbyyy/beans/ad_bean_entity.dart';
 import 'package:bbyyy/beans/commodity_category_bean_entity.dart';
 import 'package:bbyyy/beans/goods_bean_entity.dart';
+import 'package:bbyyy/beans/home_carousel_bean_entity.dart';
 import 'package:bbyyy/beans/my_shop_bean_entity.dart';
 import 'package:bbyyy/beans/store_bean_entity.dart';
-import 'package:bbyyy/beans/system_information_bean_entity.dart';
 import 'package:bbyyy/https/MyDio.dart';
+import 'package:bbyyy/https/my_request.dart';
+import 'package:bbyyy/https/url.dart';
 import 'package:bbyyy/my_tools/const.dart';
 import 'package:bbyyy/my_tools/dims.dart';
 import 'package:bbyyy/my_tools/event_bus.dart';
@@ -33,13 +35,13 @@ class _HomePageState extends State<HomePage>
   var container = [];
   var puShop = [];
   var imgs = ['images/banner1.png', 'images/banner2.png', 'images/banner3.png'];
+  var netImgs = [];
   int selectedIndex = 0;
   var tabs = ['全部'];
   var types = ['货帮', '货品'];
   List<DropdownMenuItem<String>> sortItems = [];
   int typeIndex = 1;
   List<MyShopBeanDataData> shops = [];
-
   ScrollController _controller = ScrollController();
   double maxH;
   double minH = 164;
@@ -66,6 +68,14 @@ class _HomePageState extends State<HomePage>
       _controller.animateTo(0.0,
           duration: Duration(milliseconds: 200), curve: Curves.easeIn);
     });
+    EventBus().on('homeCarousel', (arg) {
+      if (arg is HomeCarouselBeanEntity) {
+        arg.data.forEach((element) {
+          netImgs.add(element.path);
+        });
+        setState(() {});
+      }
+    });
     EventBus().on('商品变动', (arg) {
       _reController.requestRefresh();
     });
@@ -103,6 +113,7 @@ class _HomePageState extends State<HomePage>
         }
       }
     });
+    homeCarousel();
   }
 
   @override
@@ -112,6 +123,8 @@ class _HomePageState extends State<HomePage>
     EventBus().off('commodity_category');
     EventBus().off('uploadGoods');
     EventBus().off('toTop');
+    EventBus().off('homeCarousel');
+    EventBus().off('商品变动');
   }
 
   @override
@@ -137,12 +150,17 @@ class _HomePageState extends State<HomePage>
                   duration: Duration(milliseconds: 200),
                   child: Swiper(
                     itemBuilder: (BuildContext context, int index) {
-                      return new Image.asset(
-                        "${imgs[index]}",
-                        fit: BoxFit.cover,
-                      );
+                      return netImgs.length == 0
+                          ? Image.asset(
+                              "${imgs[index]}",
+                              fit: BoxFit.cover,
+                            )
+                          : MyViews().netImg(
+                              imgURL(netImgs[index]), H, double.infinity,
+                              placeholder: 'images/svg/goodsDefImg.svg');
                     },
-                    itemCount: 3,
+                    itemCount:
+                        netImgs.length == 0 ? imgs.length : netImgs.length,
                     viewportFraction: 1,
                     scale: 1,
                     autoplay: true,

+ 44 - 3
lib/paegs/mine_page/mine_page.dart

@@ -324,9 +324,50 @@ class _MinePageState extends State<MinePage> {
                       queryPersonalInformation();
                     });
                   }),
-                  functionItem('images/svg/更新.svg', '更新', () {
-                    checkForUpdates(context);
-                  }),
+                  GestureDetector(
+                    onTap: () {
+                      checkForUpdates(context,showT: true);
+                    },
+                    behavior: HitTestBehavior.translucent,
+                    child: Container(
+                      padding: EdgeInsets.only(left: 20, right: 20),
+                      child: Column(
+                        children: [
+                          Row(
+                            children: [
+                              Container(
+                                child: SvgPicture.asset(
+                                  'images/svg/更新.svg',
+                                  color: MyColors.c333333,
+                                ),
+                                margin: EdgeInsets.only(
+                                    right: 12, top: 15, bottom: 15),
+                              ),
+                              Expanded(
+                                  child: Text(
+                                '更新',
+                                style: TextStyle(
+                                    color: MyColors.c333333, fontSize: 15),
+                              )),
+                              Container(
+                                child: Text(
+                                  MyCookie().packageInfo.version,
+                                  style: TextStyle(
+                                      color: MyColors.c333333, fontSize: 15),
+                                ),
+                                margin: EdgeInsets.only(right: 10),
+                              ),
+                              SvgPicture.asset('images/svg/箭头.svg')
+                            ],
+                          ),
+                          Container(
+                            height: 1,
+                            color: MyColors.cEFEFEF,
+                          )
+                        ],
+                      ),
+                    ),
+                  ),
                   functionItem('images/svg/设置.svg', '设置', () {
                     MyTools().toPage(context, SetPage(), (then) {
                       queryPersonalInformation();

+ 4 - 74
lib/paegs/msg_page/msg_page.dart

@@ -2,6 +2,7 @@ import 'dart:convert';
 
 import 'package:bbyyy/beans/message_bean_entity.dart';
 import 'package:bbyyy/beans/my_shop_bean_entity.dart';
+import 'package:bbyyy/beans/system_information_bean_entity.dart';
 import 'package:bbyyy/beans/table_bean_entity.dart';
 import 'package:bbyyy/https/url.dart';
 import 'package:bbyyy/msgDB/my_msg_db.dart';
@@ -264,79 +265,6 @@ class _MsgPageState extends State<MsgPage> with AutomaticKeepAliveClientMixin {
   bool get wantKeepAlive => true;
 
   Widget msgItems(MessageBeanContent data) {
-    // if (data == null) {
-    //   return GestureDetector(
-    //     onTap: () {
-    //       MyTools().toPage(context, PlatformAssistantPage(), (then) {});
-    //     },
-    //     behavior: HitTestBehavior.translucent,
-    //     child: Container(
-    //       height: 73,
-    //       child: Column(
-    //         children: [
-    //           Expanded(
-    //             child: Row(
-    //               children: [
-    //                 Container(
-    //                   margin: EdgeInsets.only(left: 14, right: 14),
-    //                   child: SvgPicture.asset(
-    //                     'images/svg/平台助手.svg',
-    //                     height: 45,
-    //                     width: 45,
-    //                   ),
-    //                 ),
-    //                 Expanded(
-    //                   child: Container(
-    //                     height: 45,
-    //                     padding: EdgeInsets.only(right: 14),
-    //                     child: Column(
-    //                       children: [
-    //                         Text(
-    //                           '平台助手',
-    //                           style: TextStyle(
-    //                               color: MyColors.c333333, fontSize: 15),
-    //                         ),
-    //                         Row(
-    //                           children: [
-    //                             Expanded(
-    //                               child: Text(
-    //                                 '你有一条新的申请消息',
-    //                                 style: TextStyle(
-    //                                     color: MyColors.c888888, fontSize: 12),
-    //                               ),
-    //                             ),
-    //                             Container(
-    //                               decoration: BoxDecoration(
-    //                                   color: MyColors.cFF4233,
-    //                                   borderRadius:
-    //                                       BorderRadius.all(Radius.circular(4))),
-    //                               height: 8,
-    //                               width: 8,
-    //                               padding: EdgeInsets.only(left: 5, right: 5),
-    //                               alignment: Alignment.center,
-    //                             )
-    //                           ],
-    //                         )
-    //                       ],
-    //                       mainAxisAlignment: MainAxisAlignment.spaceBetween,
-    //                       crossAxisAlignment: CrossAxisAlignment.start,
-    //                     ),
-    //                   ),
-    //                 )
-    //               ],
-    //             ),
-    //           ),
-    //           Container(
-    //             margin: EdgeInsets.only(left: 73, right: 14),
-    //             height: 0.5,
-    //             color: MyColors.cE7E7E7,
-    //           )
-    //         ],
-    //         mainAxisAlignment: MainAxisAlignment.spaceBetween,
-    //       ),
-    //     ),
-    //   );
-    // } else {
     String pic;
     String name;
     int uid;
@@ -659,10 +587,12 @@ class _MsgPageState extends State<MsgPage> with AutomaticKeepAliveClientMixin {
         MyCookie().prefs.getString('${MyCookie().getUID()}系统消息');
     if (systemInformation != null) {
       print(systemInformation);
+      List sList = json.decode(systemInformation);
+      SystemInformationBeanEntity entity = SystemInformationBeanEntity().fromJson(json.decode(json.encode(sList[0])));
       MessageBeanContent sysMsg = MessageBeanContent();
       sysMsg.senderName = '系统消息';
       sysMsg.senderUid = -1;
-      sysMsg.content = systemInformation.split('!@##@!')[0];
+      sysMsg.content = entity.content.content;
       chatRoom['系统消息'] = sysMsg;
       if (!lastMsg.any((element) => element.senderUid == -1)) {
         lastMsg.insert(0, chatRoom['系统消息']);

+ 75 - 18
lib/paegs/system_information_page/system_information_page.dart

@@ -1,3 +1,6 @@
+import 'dart:convert';
+
+import 'package:bbyyy/beans/system_information_bean_entity.dart';
 import 'package:bbyyy/my_tools/my_colors.dart';
 import 'package:bbyyy/my_tools/my_cookie.dart';
 import 'package:bbyyy/my_tools/my_tools.dart';
@@ -10,25 +13,33 @@ class SystemInformationPage extends StatefulWidget {
 }
 
 class _SystemInformationPageState extends State<SystemInformationPage> {
-  List<String> sysMsg = [];
+  List<SystemInformationBeanEntity> sysMsg = [];
 
   @override
   void initState() {
     // TODO: implement initState
     super.initState();
     String s = MyCookie().prefs.getString('${MyCookie().getUID()}系统消息');
-    if (s != null) {
-      sysMsg = s.split('!@##@!');
-    }
+    List sL = json.decode(s);
+    sL.forEach((element) {
+      SystemInformationBeanEntity entity = SystemInformationBeanEntity()
+          .fromJson(json.decode(json.encode(element)));
+      sysMsg.add(entity);
+    });
     setState(() {});
   }
 
   @override
   Widget build(BuildContext context) {
     return Scaffold(
+      backgroundColor: MyColors.cE7E7E7,
       body: Column(
         children: [
           MyViews().myAppBar('系统消息', context, []),
+          Container(
+            height: 10,
+            color: MyColors.cE7E7E7,
+          ),
           Expanded(
             child: ListView.builder(
               itemBuilder: (BuildContext context, int index) {
@@ -42,13 +53,36 @@ class _SystemInformationPageState extends State<SystemInformationPage> {
                     children: [
                       Container(
                         color: Colors.white,
-                        child: Text(
-                          sysMsg[index],
-                          maxLines: 2,
-                          overflow: TextOverflow.ellipsis,
-                          softWrap: true,
-                          style:
-                              TextStyle(color: MyColors.c333333, fontSize: 14),
+                        child: Column(
+                          children: [
+                            Container(
+                              height: 40,
+                              child: Text(
+                                '${sysMsg[index].content.content}',
+                                maxLines: 2,
+                                overflow: TextOverflow.ellipsis,
+                                softWrap: true,
+                                style: TextStyle(
+                                    color: MyColors.c333333, fontSize: 14),
+                              ),
+                              alignment: Alignment.topLeft,
+                            ),
+                            Padding(
+                              padding: const EdgeInsets.all(8.0),
+                              child: Row(
+                                children: [
+                                  MyViews()
+                                      .myText('发布时间', MyColors.c666666, 12),
+                                  MyViews().myText(
+                                      sysMsg[index].content.startTime,
+                                      MyColors.c666666,
+                                      12),
+                                ],
+                                mainAxisAlignment:
+                                    MainAxisAlignment.spaceBetween,
+                              ),
+                            )
+                          ],
                         ),
                         alignment: Alignment.centerLeft,
                         padding: EdgeInsets.all(10),
@@ -72,7 +106,7 @@ class _SystemInformationPageState extends State<SystemInformationPage> {
 }
 
 class SystemMessageDetailsPage extends StatefulWidget {
-  String sysMsg;
+  SystemInformationBeanEntity sysMsg;
 
   SystemMessageDetailsPage(this.sysMsg);
 
@@ -88,12 +122,35 @@ class _SystemMessageDetailsPageState extends State<SystemMessageDetailsPage> {
       body: Column(
         children: [
           MyViews().myAppBar('系统消息详情', context, []),
-          Expanded(
-            child: Container(
-              margin: EdgeInsets.all(20),
-              child: Text(
-                widget.sysMsg,
-                style: TextStyle(color: MyColors.c333333, fontSize: 20),
+          SingleChildScrollView(
+            child: Expanded(
+              child: Column(
+                children: [
+                  Container(
+                    child: Text(
+                      widget.sysMsg.content.content.split('】')[0].substring(1),
+                      style: TextStyle(color: MyColors.c333333, fontSize: 25),
+                    ),
+                    alignment: Alignment.center,
+                    margin: EdgeInsets.only(top: 20),
+                  ),
+                  Container(
+                    child: Text(
+                      widget.sysMsg.content.startTime,
+                      style: TextStyle(color: MyColors.c333333, fontSize: 12),
+                    ),
+                    alignment: Alignment.centerRight,
+                    margin: EdgeInsets.only(right: 20, top: 10),
+                  ),
+                  Container(
+                    margin: EdgeInsets.all(20),
+                    child: Text(
+                      widget.sysMsg.content.content.split('】')[1],
+                      style: TextStyle(color: MyColors.c333333, fontSize: 20),
+                    ),
+                    alignment: Alignment.topLeft,
+                  ),
+                ],
               ),
             ),
           ),

+ 7 - 0
pubspec.lock

@@ -315,6 +315,13 @@ packages:
       url: "https://pub.dartlang.org"
     source: hosted
     version: "0.6.3"
+  launch_review:
+    dependency: "direct main"
+    description:
+      name: launch_review
+      url: "https://pub.flutter-io.cn"
+    source: hosted
+    version: "3.0.1"
   logging:
     dependency: transitive
     description:

+ 1 - 0
pubspec.yaml

@@ -59,6 +59,7 @@ dependencies:
   path_provider: ^2.0.1 #获取储存路径
   install_plugin: ^2.0.1 #安装apk
   url_launcher: ^6.0.3
+  launch_review: ^3.0.1
 
 
 dev_dependencies: