迭代测试

This commit is contained in:
xj.deng
2019-05-09 21:14:34 +08:00
parent 269e05bdb4
commit f5921d4e2e
5 changed files with 147 additions and 11 deletions

View File

@ -35,5 +35,32 @@
<category android:name="android.intent.category.LAUNCHER"/>
</intent-filter>
</activity>
<provider
android:name="vn.hunghd.flutterdownloader.DownloadedFileProvider"
android:authorities="${applicationId}.flutter_downloader.provider"
android:exported="false"
android:grantUriPermissions="true">
<meta-data
android:name="android.support.FILE_PROVIDER_PATHS"
android:resource="@xml/provider_paths"/>
</provider>
<provider
android:name="androidx.work.impl.WorkManagerInitializer"
android:authorities="${applicationId}.workmanager-init"
android:enabled="false"
android:exported="false" />
<provider
android:name="vn.hunghd.flutterdownloader.FlutterDownloaderInitializer"
android:authorities="${applicationId}.flutter-downloader-init"
android:exported="false">
<meta-data
android:name="vn.hunghd.flutterdownloader.MAX_CONCURRENT_TASKS"
android:value="5" />
</provider>
</application>
</manifest>

View File

@ -10,6 +10,7 @@ import 'package:flutter/rendering.dart';
import 'package:flutter_go/utils/shared_preferences.dart';
import 'package:flutter_go/views/first_page/first_page.dart';
import 'package:flutter_go/views/first_page/main_page.dart';
import 'package:flutter_go/views/update_test.dart';
import 'package:flutter_go/views/widget_page/widget_page.dart';
import 'package:flutter_go/views/welcome_page/fourth_page.dart';
import 'package:flutter_go/views/collection_page/collection_page.dart';
@ -24,6 +25,7 @@ import 'package:flutter_go/resources/widget_name_to_icon.dart';
const int ThemeColor = 0xFFC91B3A;
class AppPage extends StatefulWidget {
@override
State<StatefulWidget> createState() {
return _MyHomePageState();
@ -32,6 +34,7 @@ class AppPage extends StatefulWidget {
class _MyHomePageState extends State<AppPage>
with SingleTickerProviderStateMixin {
SpUtil sp;
WidgetControlModel widgetControl = new WidgetControlModel();
SearchHistoryList searchHistoryList;
@ -44,7 +47,7 @@ class _MyHomePageState extends State<AppPage>
{'text': 'WIDGET', 'icon': Icon(Icons.extension)},
{'text': '组件收藏', 'icon': Icon(Icons.favorite)},
{'text': '关于手册', 'icon': Icon(Icons.import_contacts)},
// {'text': '点击更新', 'icon': Icon(Icons.update)}
{'text': '点击更新', 'icon': Icon(Icons.update)}
];
List<BottomNavigationBarItem> myTabs = [];
@ -67,8 +70,10 @@ class _MyHomePageState extends State<AppPage>
..add(MainPage())
..add(WidgetPage(Provider.db))
..add(CollectionPage())
..add(FourthPage());
// ..add(FourthPage());
..add(FourthPage())
..add(UpdatePage(
));
}
@override
@ -120,9 +125,9 @@ class _MyHomePageState extends State<AppPage>
}, (value) {}, () {});
}
renderAppBar(BuildContext context,Widget widget,int index) {
renderAppBar(BuildContext context, Widget widget, int index) {
print('renderAppBar=====>>>>>>${index}');
if(index == 0) {
if (index == 0) {
return null;
}
return AppBar(title: buildSearchInput(context));
@ -131,7 +136,7 @@ class _MyHomePageState extends State<AppPage>
@override
Widget build(BuildContext context) {
return new Scaffold(
appBar: renderAppBar(context,widget,_currentIndex),
appBar: renderAppBar(context, widget, _currentIndex),
body: list[_currentIndex],
bottomNavigationBar: BottomNavigationBar(
items: myTabs,

View File

@ -1,6 +1,13 @@
import 'dart:io';
import 'package:dio/dio.dart';
import 'package:flutter/material.dart';
import 'package:flutter/services.dart';
import 'package:flutter_go/blocs/bak/search_api.dart';
import 'dart:convert';
import 'package:flutter_downloader/flutter_downloader.dart';
import 'package:path_provider/path_provider.dart';
import 'package:permission_handler/permission_handler.dart';
class UpdatePage extends StatefulWidget {
@override
@ -8,6 +15,25 @@ class UpdatePage extends StatefulWidget {
}
class _UpdatePageState extends State<UpdatePage> {
@override
void initState() {
super.initState();
FlutterDownloader.registerCallback((id, status, progress) async {
print(
"id:${id}===== status=======:${status}=====progress======:${progress}");
// 当下载完成时,调用安装
if (status == DownloadTaskStatus.complete) {
FlutterDownloader.open(taskId: id);
}
});
_permissisonReady=false;
_prepare();
}
bool _isLoading;
bool _permissisonReady;
String _localPath;
@override
Widget build(BuildContext context) {
return Column(
@ -19,8 +45,16 @@ class _UpdatePageState extends State<UpdatePage> {
Center(
child: FlatButton(
onPressed: () {
print("点击");
_UpdatePageNet();
print("点击${_permissisonReady}");
if (_permissisonReady) {
_requestDownload();
}else{
_checkPermission().then((hasGranted) {
setState(() {
_permissisonReady = hasGranted;
});
});
}
},
child: Text(
"点击获取新版本",
@ -33,8 +67,54 @@ class _UpdatePageState extends State<UpdatePage> {
);
}
Future _UpdatePageNet() async {
Response response = await dio.get("https://github.com/alibaba/flutter-go/raw/master/FlutterGo.apk");
print("=====response============="+response.data);
Future<Null> _prepare() async {
_permissisonReady = await _checkPermission();
_localPath = (await _findLocalPath()) + '/Download';
}
//检查权限
Future<bool> _checkPermission() async {
if (Theme.of(context).platform == TargetPlatform.android) {
PermissionStatus permission = await PermissionHandler()
.checkPermissionStatus(PermissionGroup.storage);
if (permission != PermissionStatus.granted) {
Map<PermissionGroup, PermissionStatus> permissions =
await PermissionHandler()
.requestPermissions([PermissionGroup.storage]);
if (permissions[PermissionGroup.storage] == PermissionStatus.granted) {
return true;
}
} else {
return true;
}
} else {
return true;
}
return false;
}
void _requestDownload() async {
final path = await _apkLocalPath;
final taskId = await FlutterDownloader.enqueue(
url: 'https://github.com/alibaba/flutter-go/raw/master/FlutterGo.apk',
savedDir: path,
showNotification: true,
// show download progress in status bar (for Android)
openFileFromNotification:
true, // click on notification to open downloaded file (for Android)
);
}
Future _findLocalPath() async {
final directory = Theme.of(context).platform == TargetPlatform.android
? await getExternalStorageDirectory()
: await getApplicationDocumentsDirectory();
return directory.path;
}
// 获取安装地址
Future<String> get _apkLocalPath async {
final directory = await getExternalStorageDirectory();
return directory.path.toString();
}
}

View File

@ -118,6 +118,13 @@ packages:
url: "https://pub.dartlang.org"
source: hosted
version: "0.11.1"
flutter_downloader:
dependency: "direct main"
description:
name: flutter_downloader
url: "https://pub.dartlang.org"
source: hosted
version: "1.1.7"
flutter_markdown:
dependency: "direct main"
description:
@ -193,6 +200,13 @@ packages:
url: "https://pub.dartlang.org"
source: hosted
version: "1.6.2"
path_provider:
dependency: "direct main"
description:
name: path_provider
url: "https://pub.dartlang.org"
source: hosted
version: "1.1.0"
pedantic:
dependency: transitive
description:
@ -200,6 +214,13 @@ packages:
url: "https://pub.dartlang.org"
source: hosted
version: "1.4.0"
permission_handler:
dependency: "direct main"
description:
name: permission_handler
url: "https://pub.dartlang.org"
source: hosted
version: "3.0.1"
quiver:
dependency: transitive
description:

View File

@ -38,6 +38,9 @@ dependencies:
flutter_bloc: ^0.11.1
bloc: ^0.12.0
html: ^0.14.0+2
flutter_downloader: ^1.1.7
path_provider: ^1.1.0
permission_handler: ^3.0.0
dev_dependencies:
flutter_test: