Commit f052ccef2cf8fd293edaad4082aafb242b9d06b5

Authored by wdn127929
1 parent 93533c26

gi tgit

@@ -4,7 +4,7 @@ source 'https://github.com/CocoaPods/Specs.git' @@ -4,7 +4,7 @@ source 'https://github.com/CocoaPods/Specs.git'
4 # source 'https://mirrors.tuna.tsinghua.edu.cn/git/CocoaPods/Specs.git' 4 # source 'https://mirrors.tuna.tsinghua.edu.cn/git/CocoaPods/Specs.git'
5 # source 'https://cdn.cocoapods.org/' 5 # source 'https://cdn.cocoapods.org/'
6 6
7 -platform :ios, '9.0' 7 +platform :ios, '11.0'
8 8
9 9
10 10
@@ -255,7 +255,7 @@ SPEC CHECKSUMS: @@ -255,7 +255,7 @@ SPEC CHECKSUMS:
255 core_location_fluttify: 9466a411ea7d22c6349c7e6a767ae4623f01eb1d 255 core_location_fluttify: 9466a411ea7d22c6349c7e6a767ae4623f01eb1d
256 device_info: d7d233b645a32c40dfdc212de5cf646ca482f175 256 device_info: d7d233b645a32c40dfdc212de5cf646ca482f175
257 easy_contact_picker: 9ab9dc70e8ddde6e76a19ffc482d7bf899868730 257 easy_contact_picker: 9ab9dc70e8ddde6e76a19ffc482d7bf899868730
258 - Flutter: 50d75fe2f02b26cc09d224853bb45737f8b3214a 258 + Flutter: f04841e97a9d0b0a8025694d0796dd46242b2854
259 flutter_app_badger: b87fc231847b03b92ce1412aa351842e7e97932f 259 flutter_app_badger: b87fc231847b03b92ce1412aa351842e7e97932f
260 flutter_app_update: 65f61da626cb111d1b24674abc4b01728d7723bc 260 flutter_app_update: 65f61da626cb111d1b24674abc4b01728d7723bc
261 flutter_bugly: c9800f4d5bc5bdc27ffdde3417a26ba44266e0c3 261 flutter_bugly: c9800f4d5bc5bdc27ffdde3417a26ba44266e0c3
@@ -289,6 +289,6 @@ SPEC CHECKSUMS: @@ -289,6 +289,6 @@ SPEC CHECKSUMS:
289 wakelock: d0fc7c864128eac40eba1617cb5264d9c940b46f 289 wakelock: d0fc7c864128eac40eba1617cb5264d9c940b46f
290 webview_flutter: 3603125dfd3bcbc9d8d418c3f80aeecf331c068b 290 webview_flutter: 3603125dfd3bcbc9d8d418c3f80aeecf331c068b
291 291
292 -PODFILE CHECKSUM: 1574ae4cc03174899add0135a43cdaf8019bd5fd 292 +PODFILE CHECKSUM: 583d0874d9843cb84ef3a723537d644f42b3ebab
293 293
294 COCOAPODS: 1.11.3 294 COCOAPODS: 1.11.3
@@ -467,7 +467,7 @@ @@ -467,7 +467,7 @@
467 GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; 467 GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
468 GCC_WARN_UNUSED_FUNCTION = YES; 468 GCC_WARN_UNUSED_FUNCTION = YES;
469 GCC_WARN_UNUSED_VARIABLE = YES; 469 GCC_WARN_UNUSED_VARIABLE = YES;
470 - IPHONEOS_DEPLOYMENT_TARGET = 9.0; 470 + IPHONEOS_DEPLOYMENT_TARGET = 11.0;
471 MTL_ENABLE_DEBUG_INFO = NO; 471 MTL_ENABLE_DEBUG_INFO = NO;
472 PROVISIONING_PROFILE_SPECIFIER = "Push Development Profile"; 472 PROVISIONING_PROFILE_SPECIFIER = "Push Development Profile";
473 SDKROOT = iphoneos; 473 SDKROOT = iphoneos;
@@ -561,7 +561,7 @@ @@ -561,7 +561,7 @@
561 GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; 561 GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
562 GCC_WARN_UNUSED_FUNCTION = YES; 562 GCC_WARN_UNUSED_FUNCTION = YES;
563 GCC_WARN_UNUSED_VARIABLE = YES; 563 GCC_WARN_UNUSED_VARIABLE = YES;
564 - IPHONEOS_DEPLOYMENT_TARGET = 9.0; 564 + IPHONEOS_DEPLOYMENT_TARGET = 11.0;
565 MTL_ENABLE_DEBUG_INFO = YES; 565 MTL_ENABLE_DEBUG_INFO = YES;
566 ONLY_ACTIVE_ARCH = YES; 566 ONLY_ACTIVE_ARCH = YES;
567 PROVISIONING_PROFILE_SPECIFIER = "Push Development Profile"; 567 PROVISIONING_PROFILE_SPECIFIER = "Push Development Profile";
@@ -612,7 +612,7 @@ @@ -612,7 +612,7 @@
612 GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; 612 GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
613 GCC_WARN_UNUSED_FUNCTION = YES; 613 GCC_WARN_UNUSED_FUNCTION = YES;
614 GCC_WARN_UNUSED_VARIABLE = YES; 614 GCC_WARN_UNUSED_VARIABLE = YES;
615 - IPHONEOS_DEPLOYMENT_TARGET = 9.0; 615 + IPHONEOS_DEPLOYMENT_TARGET = 11.0;
616 MTL_ENABLE_DEBUG_INFO = NO; 616 MTL_ENABLE_DEBUG_INFO = NO;
617 PROVISIONING_PROFILE_SPECIFIER = "Push Development Profile"; 617 PROVISIONING_PROFILE_SPECIFIER = "Push Development Profile";
618 SDKROOT = iphoneos; 618 SDKROOT = iphoneos;
@@ -636,7 +636,7 @@ @@ -636,7 +636,7 @@
636 CURRENT_PROJECT_VERSION = 393; 636 CURRENT_PROJECT_VERSION = 393;
637 DEVELOPMENT_TEAM = 8J59HM8B82; 637 DEVELOPMENT_TEAM = 8J59HM8B82;
638 ENABLE_BITCODE = NO; 638 ENABLE_BITCODE = NO;
639 - FLUTTER_BUILD_MODE = release; 639 + FLUTTER_BUILD_MODE = debug;
640 FRAMEWORK_SEARCH_PATHS = ( 640 FRAMEWORK_SEARCH_PATHS = (
641 "$(inherited)", 641 "$(inherited)",
642 "$(PROJECT_DIR)/Flutter", 642 "$(PROJECT_DIR)/Flutter",
@@ -92,5 +92,7 @@ @@ -92,5 +92,7 @@
92 <string>INUIMFK21WGH</string> 92 <string>INUIMFK21WGH</string>
93 <key>io.flutter.embedded_views_preview</key> 93 <key>io.flutter.embedded_views_preview</key>
94 <string>YES</string> 94 <string>YES</string>
  95 + <key>CADisableMinimumFrameDurationOnPhone</key>
  96 + <true/>
95 </dict> 97 </dict>
96 </plist> 98 </plist>
@@ -2433,7 +2433,7 @@ class InvicationPageState extends State<InvicationPage> @@ -2433,7 +2433,7 @@ class InvicationPageState extends State<InvicationPage>
2433 child: Container( 2433 child: Container(
2434 child: Stack( 2434 child: Stack(
2435 alignment: Alignment.bottomCenter, 2435 alignment: Alignment.bottomCenter,
2436 - overflow: Overflow.visible, 2436 + // overflow: Overflow.visible,
2437 children: [ 2437 children: [
2438 Container( 2438 Container(
2439 margin: EdgeInsets.only(bottom: ScreenUtil().setWidth(18)), 2439 margin: EdgeInsets.only(bottom: ScreenUtil().setWidth(18)),
@@ -2597,7 +2597,7 @@ class InvicationPageState extends State<InvicationPage> @@ -2597,7 +2597,7 @@ class InvicationPageState extends State<InvicationPage>
2597 child: Container( 2597 child: Container(
2598 child: Stack( 2598 child: Stack(
2599 alignment: Alignment.bottomCenter, 2599 alignment: Alignment.bottomCenter,
2600 - overflow: Overflow.visible, 2600 + // overflow: Overflow.visible,
2601 children: [ 2601 children: [
2602 Container( 2602 Container(
2603 margin: EdgeInsets.only(bottom: ScreenUtil().setWidth(18)), 2603 margin: EdgeInsets.only(bottom: ScreenUtil().setWidth(18)),
1 -import 'dart:async';  
2 -  
3 -import 'package:device_info/device_info.dart';  
4 -import 'package:dio/dio.dart';  
5 -import 'package:flutter/material.dart';  
6 -import 'package:flutter_inappwebview/flutter_inappwebview.dart';  
7 -import 'package:one_key/net/dio_util.dart';  
8 -import 'package:one_key/res/colors.dart';  
9 -import 'package:one_key/utils/event_bus.dart';  
10 -import 'package:one_key/utils/utils.dart';  
11 -import 'package:one_key/widgets/system_app_bar.dart';  
12 -import 'package:path_provider/path_provider.dart';  
13 -import 'package:permission_handler/permission_handler.dart';  
14 -import 'package:webview_flutter/webview_flutter.dart';  
15 -  
16 -import 'dart:async';  
17 -import 'dart:convert';  
18 -import 'dart:io';  
19 -  
20 -import 'package:flutter/material.dart';  
21 -import 'package:one_key/utils/event_bus.dart';  
22 -import 'package:one_key/widgets/app_bar.dart';  
23 -import 'package:one_key/widgets/system_app_bar.dart';  
24 -import 'package:webview_flutter/webview_flutter.dart'; 1 +// import 'dart:async';
25 2
  3 +// import 'package:device_info/device_info.dart';
  4 +// import 'package:dio/dio.dart';
  5 +// import 'package:flutter/material.dart';
26 // import 'package:flutter_inappwebview/flutter_inappwebview.dart'; 6 // import 'package:flutter_inappwebview/flutter_inappwebview.dart';
27 -import 'package:url_launcher/url_launcher.dart';  
28 -import 'dart:collection';  
29 -// import 'package:open_file/open_file.dart';  
30 -// import 'package:flutter_downloader/flutter_downloader.dart';  
31 -  
32 -class WebPage extends StatefulWidget {  
33 - final String title;  
34 - final String url;  
35 - final bool need;  
36 -  
37 - const WebPage({Key key, this.title, this.url, this.need = false})  
38 - : super(key: key);  
39 - @override  
40 - _WebPageState createState() => _WebPageState();  
41 -} 7 +// import 'package:one_key/net/dio_util.dart';
  8 +// import 'package:one_key/res/colors.dart';
  9 +// import 'package:one_key/utils/event_bus.dart';
  10 +// import 'package:one_key/utils/utils.dart';
  11 +// import 'package:one_key/widgets/system_app_bar.dart';
  12 +// import 'package:path_provider/path_provider.dart';
  13 +// import 'package:permission_handler/permission_handler.dart';
  14 +// import 'package:webview_flutter/webview_flutter.dart';
42 15
43 -class _WebPageState extends State<WebPage> {  
44 - final GlobalKey webViewKey = GlobalKey(); 16 +// import 'dart:async';
  17 +// import 'dart:convert';
  18 +// import 'dart:io';
45 19
46 - InAppWebViewController webViewController;  
47 - InAppWebViewGroupOptions options = InAppWebViewGroupOptions(  
48 - crossPlatform: InAppWebViewOptions(  
49 - useShouldOverrideUrlLoading: true,  
50 - useOnDownloadStart: true,  
51 - mediaPlaybackRequiresUserGesture: false,  
52 - ),  
53 - android: AndroidInAppWebViewOptions(  
54 - useHybridComposition: true,  
55 - ),  
56 - ios: IOSInAppWebViewOptions(  
57 - allowsInlineMediaPlayback: true,  
58 - )); 20 +// import 'package:flutter/material.dart';
  21 +// import 'package:one_key/utils/event_bus.dart';
  22 +// import 'package:one_key/widgets/app_bar.dart';
  23 +// import 'package:one_key/widgets/system_app_bar.dart';
  24 +// import 'package:webview_flutter/webview_flutter.dart';
59 25
60 - PullToRefreshController pullToRefreshController;  
61 - ContextMenu contextMenu;  
62 - String url = "";  
63 - double progress = 0;  
64 - final urlController = TextEditingController();  
65 - // Future<void> openFile(filePath) async {  
66 - // final _result = await OpenFile.open(filePath);  
67 - // print(_result.message); 26 +// // import 'package:flutter_inappwebview/flutter_inappwebview.dart';
  27 +// import 'package:url_launcher/url_launcher.dart';
  28 +// import 'dart:collection';
  29 +// // import 'package:open_file/open_file.dart';
  30 +// // import 'package:flutter_downloader/flutter_downloader.dart';
68 31
69 - // // setState(() {  
70 - // // _openResult = "type=${_result.type} message=${_result.message}";  
71 - // // });  
72 - // }  
73 -  
74 - @override  
75 - void initState() {  
76 - super.initState(); 32 +// class WebPage extends StatefulWidget {
  33 +// final String title;
  34 +// final String url;
  35 +// final bool need;
77 36
78 - // Enable hybrid composition.  
79 - _init();  
80 - } 37 +// const WebPage({Key key, this.title, this.url, this.need = false})
  38 +// : super(key: key);
  39 +// @override
  40 +// _WebPageState createState() => _WebPageState();
  41 +// }
81 42
82 - Future<bool> _checkPermission() async {  
83 - DeviceInfoPlugin deviceInfo = DeviceInfoPlugin();  
84 - AndroidDeviceInfo androidInfo = await deviceInfo.androidInfo;  
85 - if (Platform.isAndroid && androidInfo.version.sdkInt <= 28) {  
86 - final status = await Permission.storage.status;  
87 - if (status != PermissionStatus.granted) {  
88 - final result = await Permission.storage.request();  
89 - if (result == PermissionStatus.granted) {  
90 - return true;  
91 - }  
92 - } else {  
93 - return true;  
94 - }  
95 - } else {  
96 - return true;  
97 - }  
98 - return false;  
99 - } 43 +// class _WebPageState extends State<WebPage> {
  44 +// final GlobalKey webViewKey = GlobalKey();
100 45
101 - Future<bool> checkPermissionStorage() async {  
102 - var status = await Permission.storage.status;  
103 - if (!status.isGranted) {  
104 - status = await Permission.storage.request();  
105 - if (status.isGranted) {  
106 - return true;  
107 - }  
108 - } else {  
109 - return true;  
110 - }  
111 - return false;  
112 - } 46 +// InAppWebViewController webViewController;
  47 +// InAppWebViewGroupOptions options = InAppWebViewGroupOptions(
  48 +// crossPlatform: InAppWebViewOptions(
  49 +// useShouldOverrideUrlLoading: true,
  50 +// useOnDownloadStart: true,
  51 +// mediaPlaybackRequiresUserGesture: false,
  52 +// ),
  53 +// android: AndroidInAppWebViewOptions(
  54 +// useHybridComposition: true,
  55 +// ),
  56 +// ios: IOSInAppWebViewOptions(
  57 +// allowsInlineMediaPlayback: true,
  58 +// ));
113 59
114 - _init() async {  
115 - // WidgetsFlutterBinding.ensureInitialized();  
116 - // await FlutterDownloader.initialize(debug: true);  
117 - if (Platform.isAndroid) {  
118 - await AndroidInAppWebViewController.setWebContentsDebuggingEnabled(true); 60 +// // PullToRefreshController pullToRefreshController;
  61 +// ContextMenu contextMenu;
  62 +// String url = "";
  63 +// double progress = 0;
  64 +// final urlController = TextEditingController();
  65 +// // Future<void> openFile(filePath) async {
  66 +// // final _result = await OpenFile.open(filePath);
  67 +// // print(_result.message);
119 68
120 - var swAvailable = await AndroidWebViewFeature.isFeatureSupported(  
121 - AndroidWebViewFeature.SERVICE_WORKER_BASIC_USAGE);  
122 - var swInterceptAvailable = await AndroidWebViewFeature.isFeatureSupported(  
123 - AndroidWebViewFeature.SERVICE_WORKER_SHOULD_INTERCEPT_REQUEST); 69 +// // // setState(() {
  70 +// // // _openResult = "type=${_result.type} message=${_result.message}";
  71 +// // // });
  72 +// // }
124 73
125 - if (swAvailable && swInterceptAvailable) {  
126 - AndroidServiceWorkerController serviceWorkerController =  
127 - AndroidServiceWorkerController.instance(); 74 +// @override
  75 +// void initState() {
  76 +// super.initState();
128 77
129 - serviceWorkerController.serviceWorkerClient =  
130 - AndroidServiceWorkerClient(  
131 - shouldInterceptRequest: (request) async {  
132 - print(request);  
133 - return null;  
134 - },  
135 - );  
136 - }  
137 - }  
138 - // await FlutterDownloader.initialize(  
139 - // debug: true // optional: set false to disable printing logs to console  
140 - // );  
141 - // await Permission.storage.request();  
142 - } 78 +// // Enable hybrid composition.
  79 +// _init();
  80 +// }
143 81
144 - @override  
145 - Widget build(BuildContext context) {  
146 - return Scaffold(  
147 - // We're using a Builder here so we have a context that is below the Scaffold  
148 - // to allow calling Scaffold.of(context) so we can show a snackbar.  
149 - appBar: SystemAppBar(  
150 - widget.title,  
151 - onTap: () {  
152 - if (widget.need) {  
153 - Utils.changeStatusColor(color: MyColours.color_199095);  
154 - }  
155 - Navigator.of(context).pop();  
156 - },  
157 - ),  
158 - body: WillPopScope(  
159 - onWillPop: () async {  
160 - if (widget.need) {  
161 - Utils.changeStatusColor(color: MyColours.color_199095);  
162 - }  
163 - return true;  
164 - },  
165 - child: Column(  
166 - children: [  
167 - Expanded(  
168 - child: InAppWebView(  
169 - key: webViewKey,  
170 - // contextMenu: contextMenu,  
171 - initialUrlRequest: URLRequest(  
172 - url: Uri.parse("http://colorcun.com/privacy1.html")),  
173 - // initialFile: "assets/index.html",  
174 - initialUserScripts: UnmodifiableListView<UserScript>([]),  
175 - initialOptions: options,  
176 - pullToRefreshController: pullToRefreshController,  
177 - onWebViewCreated: (controller) {  
178 - webViewController = controller;  
179 - },  
180 - onLoadStart: (controller, url) {  
181 - setState(() {  
182 - this.url = url.toString();  
183 - urlController.text = this.url;  
184 - });  
185 - },  
186 - androidOnPermissionRequest:  
187 - (controller, origin, resources) async {  
188 - return PermissionRequestResponse(  
189 - resources: resources,  
190 - action: PermissionRequestResponseAction.GRANT);  
191 - },  
192 - shouldOverrideUrlLoading:  
193 - (controller, navigationAction) async {  
194 - var uri = navigationAction.request.url; 82 +// Future<bool> _checkPermission() async {
  83 +// DeviceInfoPlugin deviceInfo = DeviceInfoPlugin();
  84 +// AndroidDeviceInfo androidInfo = await deviceInfo.androidInfo;
  85 +// if (Platform.isAndroid && androidInfo.version.sdkInt <= 28) {
  86 +// final status = await Permission.storage.status;
  87 +// if (status != PermissionStatus.granted) {
  88 +// final result = await Permission.storage.request();
  89 +// if (result == PermissionStatus.granted) {
  90 +// return true;
  91 +// }
  92 +// } else {
  93 +// return true;
  94 +// }
  95 +// } else {
  96 +// return true;
  97 +// }
  98 +// return false;
  99 +// }
195 100
196 - if (![  
197 - "http",  
198 - "https",  
199 - "file",  
200 - "chrome",  
201 - "data",  
202 - "javascript",  
203 - "about"  
204 - ].contains(uri.scheme)) {  
205 - if (await canLaunch(url)) {  
206 - // Launch the App  
207 - await launch(  
208 - url,  
209 - );  
210 - // and cancel the request  
211 - return NavigationActionPolicy.CANCEL;  
212 - }  
213 - } 101 +// Future<bool> checkPermissionStorage() async {
  102 +// var status = await Permission.storage.status;
  103 +// if (!status.isGranted) {
  104 +// status = await Permission.storage.request();
  105 +// if (status.isGranted) {
  106 +// return true;
  107 +// }
  108 +// } else {
  109 +// return true;
  110 +// }
  111 +// return false;
  112 +// }
214 113
215 - return NavigationActionPolicy.ALLOW;  
216 - },  
217 - onLoadStop: (controller, url) async {  
218 - pullToRefreshController.endRefreshing();  
219 - setState(() {  
220 - this.url = url.toString();  
221 - urlController.text = this.url;  
222 - });  
223 - },  
224 - onLoadError: (controller, url, code, message) {  
225 - pullToRefreshController.endRefreshing();  
226 - },  
227 - onProgressChanged: (controller, progress) {  
228 - if (progress == 100) {  
229 - pullToRefreshController.endRefreshing();  
230 - }  
231 - setState(() {  
232 - this.progress = progress / 100;  
233 - urlController.text = this.url;  
234 - });  
235 - },  
236 - onUpdateVisitedHistory: (controller, url, androidIsReload) {  
237 - setState(() {  
238 - this.url = url.toString();  
239 - urlController.text = this.url;  
240 - });  
241 - },  
242 - onConsoleMessage: (controller, consoleMessage) {  
243 - print(consoleMessage);  
244 - },  
245 - onDownloadStart: (controller, url) async {  
246 - print("onDownloadStart $url");  
247 - Utils.showToast('开始下载...');  
248 - // final taskId = await FlutterDownloader.enqueue(  
249 - // url: url.toString(),  
250 - // savedDir: (await getExternalStorageDirectory()).path,  
251 - // showNotification:  
252 - // true, // show download progress in status bar (for Android)  
253 - // openFileFromNotification:  
254 - // true, // click on notification to open downloaded file (for Android)  
255 - // );  
256 - final dir = await getExternalStorageDirectory();  
257 - String savePath = dir.path + "/one_key"; 114 +// _init() async {
  115 +// // WidgetsFlutterBinding.ensureInitialized();
  116 +// // await FlutterDownloader.initialize(debug: true);
  117 +// if (Platform.isAndroid) {
  118 +// await AndroidInAppWebViewController.setWebContentsDebuggingEnabled(true);
258 119
259 - Directory directory = new Directory(savePath);  
260 - if (directory.existsSync()) {  
261 - //删除历史apk  
262 - final List<FileSystemEntity> files = directory.listSync();  
263 - for (FileSystemEntity file in files) {  
264 - file.deleteSync();  
265 - }  
266 - }  
267 - DioUtil().download(url.toString(), savePath,  
268 - onProgress: (received, total) {  
269 - // if (_progress != 100) {  
270 - // int progress = ((received / total) * 100).round();  
271 - // _progress = progress;  
272 - // _setState(() {});  
273 - // }  
274 - if (received == total) {  
275 - print('object');  
276 - Utils.showToast('文件已保存在${savePath}');  
277 - // openFile(savePath);  
278 - //下载完成  
279 - // InstallPlugin.installApk(savePath, "com.naji.one_key");  
280 - }  
281 - });  
282 - // },  
283 - // DioUtil().download(url.toString(),  
284 - // (await getExternalStorageDirectory()).path,  
285 - // onProgress: (received, total) {  
286 - // // if (_progress != 100) {  
287 - // // int progress = ((received / total) * 100).round();  
288 - // // _progress = progress;  
289 - // // _setState(() {});  
290 - // // }  
291 - // if (received == total) {  
292 - // //下载完成  
293 - // // InstallPlugin.installApk(savePath, "com.naji.one_key");  
294 - // }  
295 - // });  
296 - },  
297 - ))  
298 - ],  
299 - )  
300 - // Builder(builder: (BuildContext context) {  
301 - // return WebView(  
302 - // initialUrl: "http://colorcun.com/privacy1.html",  
303 - // javascriptMode: JavascriptMode.unrestricted,  
304 - // onWebViewCreated: (WebViewController webViewController) {  
305 - // _controller.complete(webViewController);  
306 - // },  
307 - // // TODO(iskakaushik): Remove this when collection literals makes it to stable.  
308 - // // ignore: prefer_collection_literals  
309 - // javascriptChannels: <JavascriptChannel>[  
310 - // _toasterJavascriptChannel(context),  
311 - // ].toSet(),  
312 - // navigationDelegate: (NavigationRequest request) {  
313 - // if (request.url.startsWith('https://www.youtube.com/')) {  
314 - // print('blocking navigation to $request}');  
315 - // return NavigationDecision.prevent;  
316 - // }  
317 - // print('allowing navigation to $request');  
318 - // return NavigationDecision.navigate;  
319 - // },  
320 - // onPageStarted: (String url) {  
321 - // print('Page started loading: $url');  
322 - // },  
323 - // onPageFinished: (String url) async {  
324 - // print('Page finished loading: $url');  
325 - // // showDownloadProgress(context);  
326 - // final dir = await getExternalStorageDirectory();  
327 - // String savePath = dir.path + "/one_key";  
328 - // DioUtil().download(url, savePath,  
329 - // onProgress: (received, total) {  
330 - // // if (_progress != 100) {  
331 - // // int progress = ((received / total) * 100).round();  
332 - // // _progress = progress;  
333 - // // _setState(() {});  
334 - // // }  
335 - // if (received == total) {  
336 - // print('object');  
337 - // //下载完成  
338 - // // InstallPlugin.installApk(savePath, "com.naji.one_key");  
339 - // }  
340 - // });  
341 - // },  
342 - // gestureNavigationEnabled: true,  
343 - // );  
344 - // }),  
345 - ));  
346 - } 120 +// var swAvailable = await AndroidWebViewFeature.isFeatureSupported(
  121 +// AndroidWebViewFeature.SERVICE_WORKER_BASIC_USAGE);
  122 +// var swInterceptAvailable = await AndroidWebViewFeature.isFeatureSupported(
  123 +// AndroidWebViewFeature.SERVICE_WORKER_SHOULD_INTERCEPT_REQUEST);
347 124
348 - // JavascriptChannel _toasterJavascriptChannel(BuildContext context) {  
349 - // return JavascriptChannel(  
350 - // name: 'Toaster',  
351 - // onMessageReceived: (JavascriptMessage message) {  
352 - // Scaffold.of(context).showSnackBar(  
353 - // SnackBar(content: Text(message.message)),  
354 - // );  
355 - // });  
356 - // }  
357 -} 125 +// if (swAvailable && swInterceptAvailable) {
  126 +// AndroidServiceWorkerController serviceWorkerController =
  127 +// AndroidServiceWorkerController.instance();
358 128
359 -// class WebPage extends StatelessWidget {  
360 -// final String title;  
361 -// final String url;  
362 -// final bool need; 129 +// serviceWorkerController.serviceWorkerClient =
  130 +// AndroidServiceWorkerClient(
  131 +// shouldInterceptRequest: (request) async {
  132 +// print(request);
  133 +// return null;
  134 +// },
  135 +// );
  136 +// }
  137 +// }
  138 +// // await FlutterDownloader.initialize(
  139 +// // debug: true // optional: set false to disable printing logs to console
  140 +// // );
  141 +// // await Permission.storage.request();
  142 +// }
363 143
364 -// const WebPage({Key key, this.title, this.url, this.need = false})  
365 -// : super(key: key);  
366 // @override 144 // @override
367 // Widget build(BuildContext context) { 145 // Widget build(BuildContext context) {
368 -// final Completer<WebViewController> _controller =  
369 -// Completer<WebViewController>();  
370 // return Scaffold( 146 // return Scaffold(
371 -// appBar: SystemAppBar(title, onTap: () {  
372 -// if (need) {  
373 -// Utils.changeStatusColor(color: MyColours.color_199095);  
374 -// }  
375 -// Navigator.of(context).pop();  
376 -// }),  
377 -// body: WillPopScope(  
378 -// onWillPop: () async {  
379 -// if (need) { 147 +// // We're using a Builder here so we have a context that is below the Scaffold
  148 +// // to allow calling Scaffold.of(context) so we can show a snackbar.
  149 +// appBar: SystemAppBar(
  150 +// widget.title,
  151 +// onTap: () {
  152 +// if (widget.need) {
380 // Utils.changeStatusColor(color: MyColours.color_199095); 153 // Utils.changeStatusColor(color: MyColours.color_199095);
381 // } 154 // }
382 -// return true; 155 +// Navigator.of(context).pop();
383 // }, 156 // },
384 -// child: WebView(  
385 -// initialUrl: "http://colorcun.com/privacy1.html",  
386 -// javascriptMode: JavascriptMode.unrestricted,  
387 -// onWebViewCreated: (WebViewController webViewController) {  
388 -// // Loading.showLoading(context);  
389 -// _controller.complete(webViewController);  
390 -// },  
391 -// javascriptChannels: <JavascriptChannel>[  
392 -// _toasterJavascriptChannel(context),  
393 -// ].toSet(),  
394 -// navigationDelegate: (NavigationRequest request) {  
395 -// if (request.url.startsWith('https://www.youtube.com/')) {  
396 -// return NavigationDecision.prevent; 157 +// ),
  158 +// body: WillPopScope(
  159 +// onWillPop: () async {
  160 +// if (widget.need) {
  161 +// Utils.changeStatusColor(color: MyColours.color_199095);
397 // } 162 // }
398 -// return NavigationDecision.navigate; 163 +// return true;
399 // }, 164 // },
400 -// onPageStarted: (String url) {},  
401 -// onPageFinished: (String url) {  
402 -// // Loading.hideLoading(context);  
403 -// },  
404 -// gestureNavigationEnabled: true,  
405 -// )),  
406 -// );  
407 -// } 165 +// child: Column(
  166 +// children: [
  167 +// Expanded(
  168 +// child: InAppWebView(
  169 +// key: webViewKey,
  170 +// // contextMenu: contextMenu,
  171 +// initialUrlRequest: URLRequest(
  172 +// url: Uri.parse("http://colorcun.com/privacy1.html")),
  173 +// // initialFile: "assets/index.html",
  174 +// initialUserScripts: UnmodifiableListView<UserScript>([]),
  175 +// initialOptions: options,
  176 +// pullToRefreshController: pullToRefreshController,
  177 +// onWebViewCreated: (controller) {
  178 +// webViewController = controller;
  179 +// },
  180 +// onLoadStart: (controller, url) {
  181 +// setState(() {
  182 +// this.url = url.toString();
  183 +// urlController.text = this.url;
  184 +// });
  185 +// },
  186 +// androidOnPermissionRequest:
  187 +// (controller, origin, resources) async {
  188 +// return PermissionRequestResponse(
  189 +// resources: resources,
  190 +// action: PermissionRequestResponseAction.GRANT);
  191 +// },
  192 +// shouldOverrideUrlLoading:
  193 +// (controller, navigationAction) async {
  194 +// var uri = navigationAction.request.url;
  195 +
  196 +// if (![
  197 +// "http",
  198 +// "https",
  199 +// "file",
  200 +// "chrome",
  201 +// "data",
  202 +// "javascript",
  203 +// "about"
  204 +// ].contains(uri.scheme)) {
  205 +// if (await canLaunch(url)) {
  206 +// // Launch the App
  207 +// await launch(
  208 +// url,
  209 +// );
  210 +// // and cancel the request
  211 +// return NavigationActionPolicy.CANCEL;
  212 +// }
  213 +// }
  214 +
  215 +// return NavigationActionPolicy.ALLOW;
  216 +// },
  217 +// onLoadStop: (controller, url) async {
  218 +// pullToRefreshController.endRefreshing();
  219 +// setState(() {
  220 +// this.url = url.toString();
  221 +// urlController.text = this.url;
  222 +// });
  223 +// },
  224 +// onLoadError: (controller, url, code, message) {
  225 +// pullToRefreshController.endRefreshing();
  226 +// },
  227 +// onProgressChanged: (controller, progress) {
  228 +// if (progress == 100) {
  229 +// pullToRefreshController.endRefreshing();
  230 +// }
  231 +// setState(() {
  232 +// this.progress = progress / 100;
  233 +// urlController.text = this.url;
  234 +// });
  235 +// },
  236 +// onUpdateVisitedHistory: (controller, url, androidIsReload) {
  237 +// setState(() {
  238 +// this.url = url.toString();
  239 +// urlController.text = this.url;
  240 +// });
  241 +// },
  242 +// onConsoleMessage: (controller, consoleMessage) {
  243 +// print(consoleMessage);
  244 +// },
  245 +// onDownloadStart: (controller, url) async {
  246 +// print("onDownloadStart $url");
  247 +// Utils.showToast('开始下载...');
  248 +// // final taskId = await FlutterDownloader.enqueue(
  249 +// // url: url.toString(),
  250 +// // savedDir: (await getExternalStorageDirectory()).path,
  251 +// // showNotification:
  252 +// // true, // show download progress in status bar (for Android)
  253 +// // openFileFromNotification:
  254 +// // true, // click on notification to open downloaded file (for Android)
  255 +// // );
  256 +// final dir = await getExternalStorageDirectory();
  257 +// String savePath = dir.path + "/one_key";
408 258
409 -// JavascriptChannel _toasterJavascriptChannel(BuildContext context) {  
410 -// return JavascriptChannel(  
411 -// name: 'Toaster',  
412 -// onMessageReceived: (JavascriptMessage message) {  
413 -// Scaffold.of(context).showSnackBar(  
414 -// SnackBar(content: Text(message.message)),  
415 -// );  
416 -// }); 259 +// Directory directory = new Directory(savePath);
  260 +// if (directory.existsSync()) {
  261 +// //删除历史apk
  262 +// final List<FileSystemEntity> files = directory.listSync();
  263 +// for (FileSystemEntity file in files) {
  264 +// file.deleteSync();
  265 +// }
  266 +// }
  267 +// DioUtil().download(url.toString(), savePath,
  268 +// onProgress: (received, total) {
  269 +// // if (_progress != 100) {
  270 +// // int progress = ((received / total) * 100).round();
  271 +// // _progress = progress;
  272 +// // _setState(() {});
  273 +// // }
  274 +// if (received == total) {
  275 +// print('object');
  276 +// Utils.showToast('文件已保存在${savePath}');
  277 +// // openFile(savePath);
  278 +// //下载完成
  279 +// // InstallPlugin.installApk(savePath, "com.naji.one_key");
  280 +// }
  281 +// });
  282 +// // },
  283 +// // DioUtil().download(url.toString(),
  284 +// // (await getExternalStorageDirectory()).path,
  285 +// // onProgress: (received, total) {
  286 +// // // if (_progress != 100) {
  287 +// // // int progress = ((received / total) * 100).round();
  288 +// // // _progress = progress;
  289 +// // // _setState(() {});
  290 +// // // }
  291 +// // if (received == total) {
  292 +// // //下载完成
  293 +// // // InstallPlugin.installApk(savePath, "com.naji.one_key");
  294 +// // }
  295 +// // });
  296 +// },
  297 +// ))
  298 +// ],
  299 +// )
  300 +// // Builder(builder: (BuildContext context) {
  301 +// // return WebView(
  302 +// // initialUrl: "http://colorcun.com/privacy1.html",
  303 +// // javascriptMode: JavascriptMode.unrestricted,
  304 +// // onWebViewCreated: (WebViewController webViewController) {
  305 +// // _controller.complete(webViewController);
  306 +// // },
  307 +// // // TODO(iskakaushik): Remove this when collection literals makes it to stable.
  308 +// // // ignore: prefer_collection_literals
  309 +// // javascriptChannels: <JavascriptChannel>[
  310 +// // _toasterJavascriptChannel(context),
  311 +// // ].toSet(),
  312 +// // navigationDelegate: (NavigationRequest request) {
  313 +// // if (request.url.startsWith('https://www.youtube.com/')) {
  314 +// // print('blocking navigation to $request}');
  315 +// // return NavigationDecision.prevent;
  316 +// // }
  317 +// // print('allowing navigation to $request');
  318 +// // return NavigationDecision.navigate;
  319 +// // },
  320 +// // onPageStarted: (String url) {
  321 +// // print('Page started loading: $url');
  322 +// // },
  323 +// // onPageFinished: (String url) async {
  324 +// // print('Page finished loading: $url');
  325 +// // // showDownloadProgress(context);
  326 +// // final dir = await getExternalStorageDirectory();
  327 +// // String savePath = dir.path + "/one_key";
  328 +// // DioUtil().download(url, savePath,
  329 +// // onProgress: (received, total) {
  330 +// // // if (_progress != 100) {
  331 +// // // int progress = ((received / total) * 100).round();
  332 +// // // _progress = progress;
  333 +// // // _setState(() {});
  334 +// // // }
  335 +// // if (received == total) {
  336 +// // print('object');
  337 +// // //下载完成
  338 +// // // InstallPlugin.installApk(savePath, "com.naji.one_key");
  339 +// // }
  340 +// // });
  341 +// // },
  342 +// // gestureNavigationEnabled: true,
  343 +// // );
  344 +// // }),
  345 +// ));
417 // } 346 // }
  347 +
  348 +// // JavascriptChannel _toasterJavascriptChannel(BuildContext context) {
  349 +// // return JavascriptChannel(
  350 +// // name: 'Toaster',
  351 +// // onMessageReceived: (JavascriptMessage message) {
  352 +// // Scaffold.of(context).showSnackBar(
  353 +// // SnackBar(content: Text(message.message)),
  354 +// // );
  355 +// // });
  356 +// // }
418 // } 357 // }
  358 +
  359 +// // class WebPage extends StatelessWidget {
  360 +// // final String title;
  361 +// // final String url;
  362 +// // final bool need;
  363 +
  364 +// // const WebPage({Key key, this.title, this.url, this.need = false})
  365 +// // : super(key: key);
  366 +// // @override
  367 +// // Widget build(BuildContext context) {
  368 +// // final Completer<WebViewController> _controller =
  369 +// // Completer<WebViewController>();
  370 +// // return Scaffold(
  371 +// // appBar: SystemAppBar(title, onTap: () {
  372 +// // if (need) {
  373 +// // Utils.changeStatusColor(color: MyColours.color_199095);
  374 +// // }
  375 +// // Navigator.of(context).pop();
  376 +// // }),
  377 +// // body: WillPopScope(
  378 +// // onWillPop: () async {
  379 +// // if (need) {
  380 +// // Utils.changeStatusColor(color: MyColours.color_199095);
  381 +// // }
  382 +// // return true;
  383 +// // },
  384 +// // child: WebView(
  385 +// // initialUrl: "http://colorcun.com/privacy1.html",
  386 +// // javascriptMode: JavascriptMode.unrestricted,
  387 +// // onWebViewCreated: (WebViewController webViewController) {
  388 +// // // Loading.showLoading(context);
  389 +// // _controller.complete(webViewController);
  390 +// // },
  391 +// // javascriptChannels: <JavascriptChannel>[
  392 +// // _toasterJavascriptChannel(context),
  393 +// // ].toSet(),
  394 +// // navigationDelegate: (NavigationRequest request) {
  395 +// // if (request.url.startsWith('https://www.youtube.com/')) {
  396 +// // return NavigationDecision.prevent;
  397 +// // }
  398 +// // return NavigationDecision.navigate;
  399 +// // },
  400 +// // onPageStarted: (String url) {},
  401 +// // onPageFinished: (String url) {
  402 +// // // Loading.hideLoading(context);
  403 +// // },
  404 +// // gestureNavigationEnabled: true,
  405 +// // )),
  406 +// // );
  407 +// // }
  408 +
  409 +// // JavascriptChannel _toasterJavascriptChannel(BuildContext context) {
  410 +// // return JavascriptChannel(
  411 +// // name: 'Toaster',
  412 +// // onMessageReceived: (JavascriptMessage message) {
  413 +// // Scaffold.of(context).showSnackBar(
  414 +// // SnackBar(content: Text(message.message)),
  415 +// // );
  416 +// // });
  417 +// // }
  418 +// // }
@@ -72,9 +72,9 @@ class _WebViewPageState extends State<WebViewPage> { @@ -72,9 +72,9 @@ class _WebViewPageState extends State<WebViewPage> {
72 return JavascriptChannel( 72 return JavascriptChannel(
73 name: 'Toaster', 73 name: 'Toaster',
74 onMessageReceived: (JavascriptMessage message) { 74 onMessageReceived: (JavascriptMessage message) {
75 - Scaffold.of(context).showSnackBar(  
76 - SnackBar(content: Text(message.message)),  
77 - ); 75 + // Scaffold.of(context).showSnackBar(
  76 + // SnackBar(content: Text(message.message)),
  77 + // );
78 }); 78 });
79 } 79 }
80 } 80 }
@@ -345,7 +345,8 @@ var webPageHandler = new Handler( @@ -345,7 +345,8 @@ var webPageHandler = new Handler(
345 String _title = params["title"].first; 345 String _title = params["title"].first;
346 String _url = params["url"].first; 346 String _url = params["url"].first;
347 bool need = params["need"].first == "true" ? true : false; 347 bool need = params["need"].first == "true" ? true : false;
348 - return WebPage(title: _title, url: _url, need: need); 348 +
  349 + // return WebPage(title: _title, url: _url, need: need);
349 }); 350 });
350 351
351 // 跳转到变更预订 352 // 跳转到变更预订
@@ -2059,7 +2059,7 @@ class DialogUtil { @@ -2059,7 +2059,7 @@ class DialogUtil {
2059 // globalState = state; 2059 // globalState = state;
2060 2060
2061 return Stack( 2061 return Stack(
2062 - overflow: Overflow.visible, 2062 + // overflow: Overflow.visible,
2063 children: [ 2063 children: [
2064 Container( 2064 Container(
2065 padding: EdgeInsets.symmetric( 2065 padding: EdgeInsets.symmetric(
@@ -2601,7 +2601,7 @@ class DialogUtil { @@ -2601,7 +2601,7 @@ class DialogUtil {
2601 Radius.circular( 2601 Radius.circular(
2602 ScreenUtil().setWidth(10)))), //设置圆角 2602 ScreenUtil().setWidth(10)))), //设置圆角
2603 child: Stack( 2603 child: Stack(
2604 - overflow: Overflow.visible, 2604 + // overflow: Overflow.visible,
2605 children: [ 2605 children: [
2606 Container( 2606 Container(
2607 padding: EdgeInsets.all( 2607 padding: EdgeInsets.all(
@@ -25,9 +25,9 @@ class _MyAppState extends State<MyApp> { @@ -25,9 +25,9 @@ class _MyAppState extends State<MyApp> {
25 body: Container( 25 body: Container(
26 padding: EdgeInsets.all(15), 26 padding: EdgeInsets.all(15),
27 width: double.infinity, 27 width: double.infinity,
28 - child: RaisedButton( 28 + child: InkWell(
29 child: Text("Enviar SMS"), 29 child: Text("Enviar SMS"),
30 - onPressed: () async { 30 + onTap: () async {
31 String phoneNumber = "+593992696250"; 31 String phoneNumber = "+593992696250";
32 String message = "test"; 32 String message = "test";
33 33
@@ -7,14 +7,14 @@ packages: @@ -7,14 +7,14 @@ packages:
7 name: archive 7 name: archive
8 url: "https://pub.flutter-io.cn" 8 url: "https://pub.flutter-io.cn"
9 source: hosted 9 source: hosted
10 - version: "3.1.6" 10 + version: "3.3.0"
11 async: 11 async:
12 dependency: transitive 12 dependency: transitive
13 description: 13 description:
14 name: async 14 name: async
15 url: "https://pub.flutter-io.cn" 15 url: "https://pub.flutter-io.cn"
16 source: hosted 16 source: hosted
17 - version: "2.8.2" 17 + version: "2.9.0"
18 boolean_selector: 18 boolean_selector:
19 dependency: transitive 19 dependency: transitive
20 description: 20 description:
@@ -28,35 +28,28 @@ packages: @@ -28,35 +28,28 @@ packages:
28 name: characters 28 name: characters
29 url: "https://pub.flutter-io.cn" 29 url: "https://pub.flutter-io.cn"
30 source: hosted 30 source: hosted
31 - version: "1.2.0"  
32 - charcode:  
33 - dependency: transitive  
34 - description:  
35 - name: charcode  
36 - url: "https://pub.flutter-io.cn"  
37 - source: hosted  
38 - version: "1.3.1" 31 + version: "1.2.1"
39 clock: 32 clock:
40 dependency: transitive 33 dependency: transitive
41 description: 34 description:
42 name: clock 35 name: clock
43 url: "https://pub.flutter-io.cn" 36 url: "https://pub.flutter-io.cn"
44 source: hosted 37 source: hosted
45 - version: "1.1.0" 38 + version: "1.1.1"
46 collection: 39 collection:
47 dependency: transitive 40 dependency: transitive
48 description: 41 description:
49 name: collection 42 name: collection
50 url: "https://pub.flutter-io.cn" 43 url: "https://pub.flutter-io.cn"
51 source: hosted 44 source: hosted
52 - version: "1.15.0" 45 + version: "1.16.0"
53 crypto: 46 crypto:
54 dependency: transitive 47 dependency: transitive
55 description: 48 description:
56 name: crypto 49 name: crypto
57 url: "https://pub.flutter-io.cn" 50 url: "https://pub.flutter-io.cn"
58 source: hosted 51 source: hosted
59 - version: "3.0.1" 52 + version: "3.0.2"
60 espresso: 53 espresso:
61 dependency: "direct dev" 54 dependency: "direct dev"
62 description: 55 description:
@@ -70,7 +63,7 @@ packages: @@ -70,7 +63,7 @@ packages:
70 name: fake_async 63 name: fake_async
71 url: "https://pub.flutter-io.cn" 64 url: "https://pub.flutter-io.cn"
72 source: hosted 65 source: hosted
73 - version: "1.2.0" 66 + version: "1.3.1"
74 file: 67 file:
75 dependency: transitive 68 dependency: transitive
76 description: 69 description:
@@ -109,28 +102,28 @@ packages: @@ -109,28 +102,28 @@ packages:
109 name: matcher 102 name: matcher
110 url: "https://pub.flutter-io.cn" 103 url: "https://pub.flutter-io.cn"
111 source: hosted 104 source: hosted
112 - version: "0.12.11" 105 + version: "0.12.12"
113 material_color_utilities: 106 material_color_utilities:
114 dependency: transitive 107 dependency: transitive
115 description: 108 description:
116 name: material_color_utilities 109 name: material_color_utilities
117 url: "https://pub.flutter-io.cn" 110 url: "https://pub.flutter-io.cn"
118 source: hosted 111 source: hosted
119 - version: "0.1.3" 112 + version: "0.1.5"
120 meta: 113 meta:
121 dependency: transitive 114 dependency: transitive
122 description: 115 description:
123 name: meta 116 name: meta
124 url: "https://pub.flutter-io.cn" 117 url: "https://pub.flutter-io.cn"
125 source: hosted 118 source: hosted
126 - version: "1.7.0" 119 + version: "1.8.0"
127 path: 120 path:
128 dependency: transitive 121 dependency: transitive
129 description: 122 description:
130 name: path 123 name: path
131 url: "https://pub.flutter-io.cn" 124 url: "https://pub.flutter-io.cn"
132 source: hosted 125 source: hosted
133 - version: "1.8.0" 126 + version: "1.8.2"
134 pedantic: 127 pedantic:
135 dependency: "direct dev" 128 dependency: "direct dev"
136 description: 129 description:
@@ -163,7 +156,7 @@ packages: @@ -163,7 +156,7 @@ packages:
163 name: source_span 156 name: source_span
164 url: "https://pub.flutter-io.cn" 157 url: "https://pub.flutter-io.cn"
165 source: hosted 158 source: hosted
166 - version: "1.8.1" 159 + version: "1.9.0"
167 stack_trace: 160 stack_trace:
168 dependency: transitive 161 dependency: transitive
169 description: 162 description:
@@ -184,49 +177,49 @@ packages: @@ -184,49 +177,49 @@ packages:
184 name: string_scanner 177 name: string_scanner
185 url: "https://pub.flutter-io.cn" 178 url: "https://pub.flutter-io.cn"
186 source: hosted 179 source: hosted
187 - version: "1.1.0" 180 + version: "1.1.1"
188 sync_http: 181 sync_http:
189 dependency: transitive 182 dependency: transitive
190 description: 183 description:
191 name: sync_http 184 name: sync_http
192 url: "https://pub.flutter-io.cn" 185 url: "https://pub.flutter-io.cn"
193 source: hosted 186 source: hosted
194 - version: "0.3.0" 187 + version: "0.3.1"
195 term_glyph: 188 term_glyph:
196 dependency: transitive 189 dependency: transitive
197 description: 190 description:
198 name: term_glyph 191 name: term_glyph
199 url: "https://pub.flutter-io.cn" 192 url: "https://pub.flutter-io.cn"
200 source: hosted 193 source: hosted
201 - version: "1.2.0" 194 + version: "1.2.1"
202 test_api: 195 test_api:
203 dependency: transitive 196 dependency: transitive
204 description: 197 description:
205 name: test_api 198 name: test_api
206 url: "https://pub.flutter-io.cn" 199 url: "https://pub.flutter-io.cn"
207 source: hosted 200 source: hosted
208 - version: "0.4.8" 201 + version: "0.4.12"
209 typed_data: 202 typed_data:
210 dependency: transitive 203 dependency: transitive
211 description: 204 description:
212 name: typed_data 205 name: typed_data
213 url: "https://pub.flutter-io.cn" 206 url: "https://pub.flutter-io.cn"
214 source: hosted 207 source: hosted
215 - version: "1.3.0" 208 + version: "1.3.1"
216 vector_math: 209 vector_math:
217 dependency: transitive 210 dependency: transitive
218 description: 211 description:
219 name: vector_math 212 name: vector_math
220 url: "https://pub.flutter-io.cn" 213 url: "https://pub.flutter-io.cn"
221 source: hosted 214 source: hosted
222 - version: "2.1.1" 215 + version: "2.1.2"
223 vm_service: 216 vm_service:
224 dependency: transitive 217 dependency: transitive
225 description: 218 description:
226 name: vm_service 219 name: vm_service
227 url: "https://pub.flutter-io.cn" 220 url: "https://pub.flutter-io.cn"
228 source: hosted 221 source: hosted
229 - version: "7.5.0" 222 + version: "9.0.0"
230 webdriver: 223 webdriver:
231 dependency: transitive 224 dependency: transitive
232 description: 225 description:
@@ -242,5 +235,5 @@ packages: @@ -242,5 +235,5 @@ packages:
242 source: path 235 source: path
243 version: "2.0.13" 236 version: "2.0.13"
244 sdks: 237 sdks:
245 - dart: ">=2.14.0 <3.0.0" 238 + dart: ">=2.17.0-0 <3.0.0"
246 flutter: ">=2.0.0" 239 flutter: ">=2.0.0"
@@ -7,14 +7,14 @@ packages: @@ -7,14 +7,14 @@ packages:
7 name: archive 7 name: archive
8 url: "https://pub.flutter-io.cn" 8 url: "https://pub.flutter-io.cn"
9 source: hosted 9 source: hosted
10 - version: "3.1.6" 10 + version: "3.3.0"
11 async: 11 async:
12 dependency: transitive 12 dependency: transitive
13 description: 13 description:
14 name: async 14 name: async
15 url: "https://pub.flutter-io.cn" 15 url: "https://pub.flutter-io.cn"
16 source: hosted 16 source: hosted
17 - version: "2.8.2" 17 + version: "2.9.0"
18 boolean_selector: 18 boolean_selector:
19 dependency: transitive 19 dependency: transitive
20 description: 20 description:
@@ -28,42 +28,35 @@ packages: @@ -28,42 +28,35 @@ packages:
28 name: characters 28 name: characters
29 url: "https://pub.flutter-io.cn" 29 url: "https://pub.flutter-io.cn"
30 source: hosted 30 source: hosted
31 - version: "1.2.0"  
32 - charcode:  
33 - dependency: transitive  
34 - description:  
35 - name: charcode  
36 - url: "https://pub.flutter-io.cn"  
37 - source: hosted  
38 - version: "1.3.1" 31 + version: "1.2.1"
39 clock: 32 clock:
40 dependency: transitive 33 dependency: transitive
41 description: 34 description:
42 name: clock 35 name: clock
43 url: "https://pub.flutter-io.cn" 36 url: "https://pub.flutter-io.cn"
44 source: hosted 37 source: hosted
45 - version: "1.1.0" 38 + version: "1.1.1"
46 collection: 39 collection:
47 dependency: transitive 40 dependency: transitive
48 description: 41 description:
49 name: collection 42 name: collection
50 url: "https://pub.flutter-io.cn" 43 url: "https://pub.flutter-io.cn"
51 source: hosted 44 source: hosted
52 - version: "1.15.0" 45 + version: "1.16.0"
53 crypto: 46 crypto:
54 dependency: transitive 47 dependency: transitive
55 description: 48 description:
56 name: crypto 49 name: crypto
57 url: "https://pub.flutter-io.cn" 50 url: "https://pub.flutter-io.cn"
58 source: hosted 51 source: hosted
59 - version: "3.0.1" 52 + version: "3.0.2"
60 fake_async: 53 fake_async:
61 dependency: transitive 54 dependency: transitive
62 description: 55 description:
63 name: fake_async 56 name: fake_async
64 url: "https://pub.flutter-io.cn" 57 url: "https://pub.flutter-io.cn"
65 source: hosted 58 source: hosted
66 - version: "1.2.0" 59 + version: "1.3.1"
67 file: 60 file:
68 dependency: transitive 61 dependency: transitive
69 description: 62 description:
@@ -97,28 +90,28 @@ packages: @@ -97,28 +90,28 @@ packages:
97 name: matcher 90 name: matcher
98 url: "https://pub.flutter-io.cn" 91 url: "https://pub.flutter-io.cn"
99 source: hosted 92 source: hosted
100 - version: "0.12.11" 93 + version: "0.12.12"
101 material_color_utilities: 94 material_color_utilities:
102 dependency: transitive 95 dependency: transitive
103 description: 96 description:
104 name: material_color_utilities 97 name: material_color_utilities
105 url: "https://pub.flutter-io.cn" 98 url: "https://pub.flutter-io.cn"
106 source: hosted 99 source: hosted
107 - version: "0.1.3" 100 + version: "0.1.5"
108 meta: 101 meta:
109 dependency: transitive 102 dependency: transitive
110 description: 103 description:
111 name: meta 104 name: meta
112 url: "https://pub.flutter-io.cn" 105 url: "https://pub.flutter-io.cn"
113 source: hosted 106 source: hosted
114 - version: "1.7.0" 107 + version: "1.8.0"
115 path: 108 path:
116 dependency: transitive 109 dependency: transitive
117 description: 110 description:
118 name: path 111 name: path
119 url: "https://pub.flutter-io.cn" 112 url: "https://pub.flutter-io.cn"
120 source: hosted 113 source: hosted
121 - version: "1.8.0" 114 + version: "1.8.2"
122 pedantic: 115 pedantic:
123 dependency: "direct dev" 116 dependency: "direct dev"
124 description: 117 description:
@@ -151,7 +144,7 @@ packages: @@ -151,7 +144,7 @@ packages:
151 name: source_span 144 name: source_span
152 url: "https://pub.flutter-io.cn" 145 url: "https://pub.flutter-io.cn"
153 source: hosted 146 source: hosted
154 - version: "1.8.1" 147 + version: "1.9.0"
155 stack_trace: 148 stack_trace:
156 dependency: transitive 149 dependency: transitive
157 description: 150 description:
@@ -172,49 +165,49 @@ packages: @@ -172,49 +165,49 @@ packages:
172 name: string_scanner 165 name: string_scanner
173 url: "https://pub.flutter-io.cn" 166 url: "https://pub.flutter-io.cn"
174 source: hosted 167 source: hosted
175 - version: "1.1.0" 168 + version: "1.1.1"
176 sync_http: 169 sync_http:
177 dependency: transitive 170 dependency: transitive
178 description: 171 description:
179 name: sync_http 172 name: sync_http
180 url: "https://pub.flutter-io.cn" 173 url: "https://pub.flutter-io.cn"
181 source: hosted 174 source: hosted
182 - version: "0.3.0" 175 + version: "0.3.1"
183 term_glyph: 176 term_glyph:
184 dependency: transitive 177 dependency: transitive
185 description: 178 description:
186 name: term_glyph 179 name: term_glyph
187 url: "https://pub.flutter-io.cn" 180 url: "https://pub.flutter-io.cn"
188 source: hosted 181 source: hosted
189 - version: "1.2.0" 182 + version: "1.2.1"
190 test_api: 183 test_api:
191 dependency: transitive 184 dependency: transitive
192 description: 185 description:
193 name: test_api 186 name: test_api
194 url: "https://pub.flutter-io.cn" 187 url: "https://pub.flutter-io.cn"
195 source: hosted 188 source: hosted
196 - version: "0.4.8" 189 + version: "0.4.12"
197 typed_data: 190 typed_data:
198 dependency: transitive 191 dependency: transitive
199 description: 192 description:
200 name: typed_data 193 name: typed_data
201 url: "https://pub.flutter-io.cn" 194 url: "https://pub.flutter-io.cn"
202 source: hosted 195 source: hosted
203 - version: "1.3.0" 196 + version: "1.3.1"
204 vector_math: 197 vector_math:
205 dependency: transitive 198 dependency: transitive
206 description: 199 description:
207 name: vector_math 200 name: vector_math
208 url: "https://pub.flutter-io.cn" 201 url: "https://pub.flutter-io.cn"
209 source: hosted 202 source: hosted
210 - version: "2.1.1" 203 + version: "2.1.2"
211 vm_service: 204 vm_service:
212 dependency: transitive 205 dependency: transitive
213 description: 206 description:
214 name: vm_service 207 name: vm_service
215 url: "https://pub.flutter-io.cn" 208 url: "https://pub.flutter-io.cn"
216 source: hosted 209 source: hosted
217 - version: "7.5.0" 210 + version: "9.0.0"
218 webdriver: 211 webdriver:
219 dependency: transitive 212 dependency: transitive
220 description: 213 description:
@@ -223,5 +216,5 @@ packages: @@ -223,5 +216,5 @@ packages:
223 source: hosted 216 source: hosted
224 version: "3.0.0" 217 version: "3.0.0"
225 sdks: 218 sdks:
226 - dart: ">=2.14.0 <3.0.0" 219 + dart: ">=2.17.0-0 <3.0.0"
227 flutter: ">=2.0.0" 220 flutter: ">=2.0.0"
@@ -56,7 +56,7 @@ packages: @@ -56,7 +56,7 @@ packages:
56 name: async 56 name: async
57 url: "https://pub.flutter-io.cn" 57 url: "https://pub.flutter-io.cn"
58 source: hosted 58 source: hosted
59 - version: "2.8.2" 59 + version: "2.9.0"
60 audioplayers: 60 audioplayers:
61 dependency: "direct main" 61 dependency: "direct main"
62 description: 62 description:
@@ -161,14 +161,7 @@ packages: @@ -161,14 +161,7 @@ packages:
161 name: characters 161 name: characters
162 url: "https://pub.flutter-io.cn" 162 url: "https://pub.flutter-io.cn"
163 source: hosted 163 source: hosted
164 - version: "1.2.0"  
165 - charcode:  
166 - dependency: transitive  
167 - description:  
168 - name: charcode  
169 - url: "https://pub.flutter-io.cn"  
170 - source: hosted  
171 - version: "1.3.1" 164 + version: "1.2.1"
172 checked_yaml: 165 checked_yaml:
173 dependency: transitive 166 dependency: transitive
174 description: 167 description:
@@ -189,7 +182,7 @@ packages: @@ -189,7 +182,7 @@ packages:
189 name: clock 182 name: clock
190 url: "https://pub.flutter-io.cn" 183 url: "https://pub.flutter-io.cn"
191 source: hosted 184 source: hosted
192 - version: "1.1.0" 185 + version: "1.1.1"
193 code_builder: 186 code_builder:
194 dependency: transitive 187 dependency: transitive
195 description: 188 description:
@@ -203,7 +196,7 @@ packages: @@ -203,7 +196,7 @@ packages:
203 name: collection 196 name: collection
204 url: "https://pub.flutter-io.cn" 197 url: "https://pub.flutter-io.cn"
205 source: hosted 198 source: hosted
206 - version: "1.15.0" 199 + version: "1.16.0"
207 common_utils: 200 common_utils:
208 dependency: "direct main" 201 dependency: "direct main"
209 description: 202 description:
@@ -357,7 +350,7 @@ packages: @@ -357,7 +350,7 @@ packages:
357 name: fake_async 350 name: fake_async
358 url: "https://pub.flutter-io.cn" 351 url: "https://pub.flutter-io.cn"
359 source: hosted 352 source: hosted
360 - version: "1.2.0" 353 + version: "1.3.1"
361 ffi: 354 ffi:
362 dependency: transitive 355 dependency: transitive
363 description: 356 description:
@@ -446,7 +439,7 @@ packages: @@ -446,7 +439,7 @@ packages:
446 name: flutter_inappwebview 439 name: flutter_inappwebview
447 url: "https://pub.flutter-io.cn" 440 url: "https://pub.flutter-io.cn"
448 source: hosted 441 source: hosted
449 - version: "5.3.2" 442 + version: "5.0.5"
450 flutter_native_image: 443 flutter_native_image:
451 dependency: "direct main" 444 dependency: "direct main"
452 description: 445 description:
@@ -652,7 +645,7 @@ packages: @@ -652,7 +645,7 @@ packages:
652 name: js 645 name: js
653 url: "https://pub.flutter-io.cn" 646 url: "https://pub.flutter-io.cn"
654 source: hosted 647 source: hosted
655 - version: "0.6.3" 648 + version: "0.6.4"
656 json_annotation: 649 json_annotation:
657 dependency: "direct main" 650 dependency: "direct main"
658 description: 651 description:
@@ -687,21 +680,21 @@ packages: @@ -687,21 +680,21 @@ packages:
687 name: matcher 680 name: matcher
688 url: "https://pub.flutter-io.cn" 681 url: "https://pub.flutter-io.cn"
689 source: hosted 682 source: hosted
690 - version: "0.12.11" 683 + version: "0.12.12"
691 material_color_utilities: 684 material_color_utilities:
692 dependency: transitive 685 dependency: transitive
693 description: 686 description:
694 name: material_color_utilities 687 name: material_color_utilities
695 url: "https://pub.flutter-io.cn" 688 url: "https://pub.flutter-io.cn"
696 source: hosted 689 source: hosted
697 - version: "0.1.3" 690 + version: "0.1.5"
698 meta: 691 meta:
699 dependency: transitive 692 dependency: transitive
700 description: 693 description:
701 name: meta 694 name: meta
702 url: "https://pub.flutter-io.cn" 695 url: "https://pub.flutter-io.cn"
703 source: hosted 696 source: hosted
704 - version: "1.7.0" 697 + version: "1.8.0"
705 mime: 698 mime:
706 dependency: transitive 699 dependency: transitive
707 description: 700 description:
@@ -743,7 +736,7 @@ packages: @@ -743,7 +736,7 @@ packages:
743 name: path 736 name: path
744 url: "https://pub.flutter-io.cn" 737 url: "https://pub.flutter-io.cn"
745 source: hosted 738 source: hosted
746 - version: "1.8.0" 739 + version: "1.8.2"
747 path_drawing: 740 path_drawing:
748 dependency: transitive 741 dependency: transitive
749 description: 742 description:
@@ -1077,7 +1070,7 @@ packages: @@ -1077,7 +1070,7 @@ packages:
1077 name: source_span 1070 name: source_span
1078 url: "https://pub.flutter-io.cn" 1071 url: "https://pub.flutter-io.cn"
1079 source: hosted 1072 source: hosted
1080 - version: "1.8.1" 1073 + version: "1.9.0"
1081 sqflite: 1074 sqflite:
1082 dependency: "direct main" 1075 dependency: "direct main"
1083 description: 1076 description:
@@ -1119,7 +1112,7 @@ packages: @@ -1119,7 +1112,7 @@ packages:
1119 name: string_scanner 1112 name: string_scanner
1120 url: "https://pub.flutter-io.cn" 1113 url: "https://pub.flutter-io.cn"
1121 source: hosted 1114 source: hosted
1122 - version: "1.1.0" 1115 + version: "1.1.1"
1123 synchronized: 1116 synchronized:
1124 dependency: transitive 1117 dependency: transitive
1125 description: 1118 description:
@@ -1140,14 +1133,14 @@ packages: @@ -1140,14 +1133,14 @@ packages:
1140 name: term_glyph 1133 name: term_glyph
1141 url: "https://pub.flutter-io.cn" 1134 url: "https://pub.flutter-io.cn"
1142 source: hosted 1135 source: hosted
1143 - version: "1.2.0" 1136 + version: "1.2.1"
1144 test_api: 1137 test_api:
1145 dependency: transitive 1138 dependency: transitive
1146 description: 1139 description:
1147 name: test_api 1140 name: test_api
1148 url: "https://pub.flutter-io.cn" 1141 url: "https://pub.flutter-io.cn"
1149 source: hosted 1142 source: hosted
1150 - version: "0.4.8" 1143 + version: "0.4.12"
1151 timing: 1144 timing:
1152 dependency: transitive 1145 dependency: transitive
1153 description: 1146 description:
@@ -1247,7 +1240,7 @@ packages: @@ -1247,7 +1240,7 @@ packages:
1247 name: vector_math 1240 name: vector_math
1248 url: "https://pub.flutter-io.cn" 1241 url: "https://pub.flutter-io.cn"
1249 source: hosted 1242 source: hosted
1250 - version: "2.1.1" 1243 + version: "2.1.2"
1251 video_compress: 1244 video_compress:
1252 dependency: "direct main" 1245 dependency: "direct main"
1253 description: 1246 description:
@@ -1375,5 +1368,5 @@ packages: @@ -1375,5 +1368,5 @@ packages:
1375 source: hosted 1368 source: hosted
1376 version: "3.1.1" 1369 version: "3.1.1"
1377 sdks: 1370 sdks:
1378 - dart: ">=2.16.0 <3.0.0" 1371 + dart: ">=2.17.0-0 <3.0.0"
1379 flutter: ">=2.10.0" 1372 flutter: ">=2.10.0"
@@ -148,7 +148,8 @@ dependencies: @@ -148,7 +148,8 @@ dependencies:
148 flutter_staggered_grid_view: ^0.4.1 148 flutter_staggered_grid_view: ^0.4.1
149 # webview 149 # webview
150 # webview_flutter: ^2.0.13 150 # webview_flutter: ^2.0.13
151 - flutter_inappwebview: ^5.3.2 151 + # flutter_inappwebview: ^5.3.2
  152 + flutter_inappwebview: ^5.0.5
152 # flutter_downloader: ^1.7.1 153 # flutter_downloader: ^1.7.1
153 # open_file: ^3.2.1 154 # open_file: ^3.2.1
154 155