mirror of
https://github.com/alibaba/flutter-go.git
synced 2025-05-20 22:36:34 +08:00
@ -1 +1 @@
|
|||||||
[{"outputType":{"type":"APK"},"apkInfo":{"type":"MAIN","splits":[],"versionCode":1,"versionName":"0.0.5","enabled":true,"outputFile":"app-release.apk","fullName":"release","baseName":"release"},"path":"app-release.apk","properties":{}}]
|
[{"outputType":{"type":"APK"},"apkInfo":{"type":"MAIN","splits":[],"versionCode":1,"versionName":"1.0.6","enabled":true,"outputFile":"app-release.apk","fullName":"release","baseName":"release"},"path":"app-release.apk","properties":{}}]
|
@ -10,10 +10,11 @@
|
|||||||
<uses-permission android:name="android.permission.INTERNET"/>
|
<uses-permission android:name="android.permission.INTERNET"/>
|
||||||
<uses-permission android:name="android.permission.MODE_WORLD_READABLE"/>
|
<uses-permission android:name="android.permission.MODE_WORLD_READABLE"/>
|
||||||
<uses-permission android:name="android.permission.MODE_WORLD_WRITEABLE"/>
|
<uses-permission android:name="android.permission.MODE_WORLD_WRITEABLE"/>
|
||||||
|
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
|
||||||
|
|
||||||
<application
|
<application
|
||||||
android:name="io.flutter.app.FlutterApplication"
|
android:name="io.flutter.app.FlutterApplication"
|
||||||
android:label="fluttergo"
|
android:label="FlutterGo"
|
||||||
android:icon="@mipmap/ic_launcher_logo">
|
android:icon="@mipmap/ic_launcher_logo">
|
||||||
<activity
|
<activity
|
||||||
android:name=".MainActivity"
|
android:name=".MainActivity"
|
||||||
@ -34,5 +35,32 @@
|
|||||||
<category android:name="android.intent.category.LAUNCHER"/>
|
<category android:name="android.intent.category.LAUNCHER"/>
|
||||||
</intent-filter>
|
</intent-filter>
|
||||||
</activity>
|
</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>
|
</application>
|
||||||
</manifest>
|
</manifest>
|
||||||
|
BIN
app-release.apk
Normal file
BIN
app-release.apk
Normal file
Binary file not shown.
@ -222,6 +222,7 @@
|
|||||||
9705A1C41CF9048500538489 /* Embed Frameworks */,
|
9705A1C41CF9048500538489 /* Embed Frameworks */,
|
||||||
3B06AD1E1E4923F5004D2608 /* Thin Binary */,
|
3B06AD1E1E4923F5004D2608 /* Thin Binary */,
|
||||||
C38E5EAE601417DA9DF11753 /* [CP] Embed Pods Frameworks */,
|
C38E5EAE601417DA9DF11753 /* [CP] Embed Pods Frameworks */,
|
||||||
|
2432F011A7D713E4BFB3DC88 /* [CP] Copy Pods Resources */,
|
||||||
);
|
);
|
||||||
buildRules = (
|
buildRules = (
|
||||||
);
|
);
|
||||||
@ -300,6 +301,24 @@
|
|||||||
/* End PBXResourcesBuildPhase section */
|
/* End PBXResourcesBuildPhase section */
|
||||||
|
|
||||||
/* Begin PBXShellScriptBuildPhase section */
|
/* Begin PBXShellScriptBuildPhase section */
|
||||||
|
2432F011A7D713E4BFB3DC88 /* [CP] Copy Pods Resources */ = {
|
||||||
|
isa = PBXShellScriptBuildPhase;
|
||||||
|
buildActionMask = 2147483647;
|
||||||
|
files = (
|
||||||
|
);
|
||||||
|
inputPaths = (
|
||||||
|
"${SRCROOT}/Pods/Target Support Files/Pods-Runner/Pods-Runner-resources.sh",
|
||||||
|
"${PODS_CONFIGURATION_BUILD_DIR}/flutter_downloader/FlutterDownloaderDatabase.bundle",
|
||||||
|
);
|
||||||
|
name = "[CP] Copy Pods Resources";
|
||||||
|
outputPaths = (
|
||||||
|
"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/FlutterDownloaderDatabase.bundle",
|
||||||
|
);
|
||||||
|
runOnlyForDeploymentPostprocessing = 0;
|
||||||
|
shellPath = /bin/sh;
|
||||||
|
shellScript = "\"${SRCROOT}/Pods/Target Support Files/Pods-Runner/Pods-Runner-resources.sh\"\n";
|
||||||
|
showEnvVarsInLog = 0;
|
||||||
|
};
|
||||||
3B06AD1E1E4923F5004D2608 /* Thin Binary */ = {
|
3B06AD1E1E4923F5004D2608 /* Thin Binary */ = {
|
||||||
isa = PBXShellScriptBuildPhase;
|
isa = PBXShellScriptBuildPhase;
|
||||||
buildActionMask = 2147483647;
|
buildActionMask = 2147483647;
|
||||||
|
@ -42,7 +42,7 @@
|
|||||||
</AdditionalOptions>
|
</AdditionalOptions>
|
||||||
</TestAction>
|
</TestAction>
|
||||||
<LaunchAction
|
<LaunchAction
|
||||||
buildConfiguration = "Release"
|
buildConfiguration = "Debug"
|
||||||
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
|
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
|
||||||
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
|
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
|
||||||
launchStyle = "0"
|
launchStyle = "0"
|
||||||
|
@ -7,4 +7,6 @@ class Api{
|
|||||||
static const String CHECK_LOGIN = BASE_URL+'checkLogin';//验证登陆
|
static const String CHECK_LOGIN = BASE_URL+'checkLogin';//验证登陆
|
||||||
|
|
||||||
static const String LOGOUT = BASE_URL+'logout';//退出登陆
|
static const String LOGOUT = BASE_URL+'logout';//退出登陆
|
||||||
|
|
||||||
|
static const String VERSION = BASE_URL+'getAppVersion';//检查版本
|
||||||
}
|
}
|
@ -1,6 +1,10 @@
|
|||||||
|
import 'dart:async';
|
||||||
|
import 'dart:core';
|
||||||
|
|
||||||
import 'package:flutter/material.dart';
|
import 'package:flutter/material.dart';
|
||||||
import 'package:fluro/fluro.dart';
|
import 'package:fluro/fluro.dart';
|
||||||
import 'package:flutter/rendering.dart';
|
import 'package:flutter/rendering.dart';
|
||||||
|
import 'package:url_launcher/url_launcher.dart';
|
||||||
import 'routers/routers.dart';
|
import 'routers/routers.dart';
|
||||||
import 'routers/application.dart';
|
import 'routers/application.dart';
|
||||||
import 'package:flutter_spinkit/flutter_spinkit.dart';
|
import 'package:flutter_spinkit/flutter_spinkit.dart';
|
||||||
@ -36,14 +40,26 @@ class _MyAppState extends State<MyApp> {
|
|||||||
bool _isLoading = true;
|
bool _isLoading = true;
|
||||||
|
|
||||||
@override
|
@override
|
||||||
void initState() {
|
Future initState() {
|
||||||
super.initState();
|
super.initState();
|
||||||
|
var platformAandroid =
|
||||||
|
(Theme.of(context).platform == TargetPlatform.android);
|
||||||
|
DataUtils.checkVersion({'name': 'FlutterGo'}).then((bool) {
|
||||||
|
print("返回值back ${bool}");
|
||||||
|
if (platformAandroid && bool) {
|
||||||
|
setState(() {});
|
||||||
|
_UpdateURL();
|
||||||
|
}
|
||||||
|
}).catchError((onError) {
|
||||||
|
print('获取失败:$onError');
|
||||||
|
});
|
||||||
|
|
||||||
DataUtils.checkLogin().then((hasLogin) {
|
DataUtils.checkLogin().then((hasLogin) {
|
||||||
setState(() {
|
setState(() {
|
||||||
_hasLogin = hasLogin;
|
_hasLogin = hasLogin;
|
||||||
_isLoading = false;
|
_isLoading = false;
|
||||||
});
|
});
|
||||||
}).catchError((onError){
|
}).catchError((onError) {
|
||||||
setState(() {
|
setState(() {
|
||||||
_hasLogin = true;
|
_hasLogin = true;
|
||||||
_isLoading = false;
|
_isLoading = false;
|
||||||
@ -52,24 +68,34 @@ class _MyAppState extends State<MyApp> {
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
showWelcomePage() {
|
_UpdateURL() async {
|
||||||
if (_isLoading) {
|
const currUrl =
|
||||||
return Container(
|
'https://github.com/alibaba/flutter-go/raw/master/FlutterGo.apk';
|
||||||
color: const Color(ThemeColor),
|
if (await canLaunch(currUrl)) {
|
||||||
child: Center(
|
await launch(currUrl);
|
||||||
child: SpinKitPouringHourglass(color: Colors.white),
|
|
||||||
),
|
|
||||||
);
|
|
||||||
} else {
|
} else {
|
||||||
// 判断是否已经登录
|
throw 'Could not launch $currUrl';
|
||||||
if (_hasLogin) {
|
|
||||||
return AppPage();
|
|
||||||
} else {
|
|
||||||
return LoginPage();
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
showWelcomePage() {
|
||||||
|
// if (_isLoading) {
|
||||||
|
// return Container(
|
||||||
|
// color: const Color(ThemeColor),
|
||||||
|
// child: Center(
|
||||||
|
// child: SpinKitPouringHourglass(color: Colors.white),
|
||||||
|
// ),
|
||||||
|
// );
|
||||||
|
// } else {
|
||||||
|
// // 判断是否已经登录
|
||||||
|
// if (_hasLogin) {
|
||||||
|
return AppPage();
|
||||||
|
// } else {
|
||||||
|
// return LoginPage();
|
||||||
|
// }
|
||||||
|
// }
|
||||||
|
}
|
||||||
|
|
||||||
@override
|
@override
|
||||||
Widget build(BuildContext context) {
|
Widget build(BuildContext context) {
|
||||||
return new MaterialApp(
|
return new MaterialApp(
|
||||||
@ -88,6 +114,7 @@ class _MyAppState extends State<MyApp> {
|
|||||||
),
|
),
|
||||||
),
|
),
|
||||||
home: new Scaffold(body: showWelcomePage()),
|
home: new Scaffold(body: showWelcomePage()),
|
||||||
|
//去掉debug logo
|
||||||
debugShowCheckedModeBanner: false,
|
debugShowCheckedModeBanner: false,
|
||||||
onGenerateRoute: Application.router.generator,
|
onGenerateRoute: Application.router.generator,
|
||||||
navigatorObservers: <NavigatorObserver>[Analytics.observer],
|
navigatorObservers: <NavigatorObserver>[Analytics.observer],
|
||||||
|
@ -59,4 +59,6 @@ class UserInfoControlModel {
|
|||||||
Future deleteAll() async{
|
Future deleteAll() async{
|
||||||
return await sql.deleteAll();
|
return await sql.deleteAll();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
29
lib/model/version.dart
Normal file
29
lib/model/version.dart
Normal file
@ -0,0 +1,29 @@
|
|||||||
|
class Data {
|
||||||
|
String version;
|
||||||
|
String name;
|
||||||
|
|
||||||
|
Data.fromJson(Map<String, dynamic> json)
|
||||||
|
: version = json['version'],
|
||||||
|
name = json['name'];
|
||||||
|
|
||||||
|
@override
|
||||||
|
String toString() {
|
||||||
|
return 'name: $name ,version: $version';
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
class Version {
|
||||||
|
Data data;
|
||||||
|
int status;
|
||||||
|
bool success;
|
||||||
|
|
||||||
|
Version.formJson(Map<String, dynamic> json)
|
||||||
|
: status = json['status'],
|
||||||
|
success = json['success'],
|
||||||
|
data = Data.fromJson(json['data']);
|
||||||
|
|
||||||
|
@override
|
||||||
|
String toString() {
|
||||||
|
return 'status: $status ,success: $success,date: ${data.toString()}';
|
||||||
|
}
|
||||||
|
}
|
@ -1,13 +1,16 @@
|
|||||||
import 'dart:async' show Future;
|
import 'dart:async' show Future;
|
||||||
|
|
||||||
|
import 'package:flutter_go/model/version.dart';
|
||||||
|
import 'package:package_info/package_info.dart';
|
||||||
|
import 'package:url_launcher/url_launcher.dart';
|
||||||
|
|
||||||
import './net_utils.dart';
|
import './net_utils.dart';
|
||||||
import '../model/user_info.dart';
|
import '../model/user_info.dart';
|
||||||
import 'package:flutter_go/api/api.dart';
|
import 'package:flutter_go/api/api.dart';
|
||||||
|
|
||||||
|
class DataUtils {
|
||||||
class DataUtils{
|
|
||||||
// 登陆获取用户信息
|
// 登陆获取用户信息
|
||||||
static Future<UserInfo> doLogin(Map<String,String> params) async{
|
static Future<UserInfo> doLogin(Map<String, String> params) async {
|
||||||
var response = await NetUtils.post(Api.DO_LOGIN, params);
|
var response = await NetUtils.post(Api.DO_LOGIN, params);
|
||||||
UserInfo userInfo = UserInfo.fromJson(response['data']);
|
UserInfo userInfo = UserInfo.fromJson(response['data']);
|
||||||
return userInfo;
|
return userInfo;
|
||||||
@ -15,16 +18,36 @@ class DataUtils{
|
|||||||
|
|
||||||
// 验证登陆
|
// 验证登陆
|
||||||
|
|
||||||
static Future<bool> checkLogin() async{
|
static Future<bool> checkLogin() async {
|
||||||
var response = await NetUtils.get(Api.CHECK_LOGIN);
|
var response = await NetUtils.get(Api.CHECK_LOGIN);
|
||||||
print('验证登陆:$response');
|
print('验证登陆:$response');
|
||||||
return response['success'];
|
return response['success'];
|
||||||
}
|
}
|
||||||
|
|
||||||
// 退出登陆
|
// 退出登陆
|
||||||
static Future<bool> logout() async{
|
static Future<bool> logout() async {
|
||||||
var response = await NetUtils.get(Api.LOGOUT);
|
var response = await NetUtils.get(Api.LOGOUT);
|
||||||
print('退出登陆 $response');
|
print('退出登陆 $response');
|
||||||
return response['success'];
|
return response['success'];
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
/**
|
||||||
|
* {"status":200,"data":{"version":"0.0.2","name":"FlutterGo"},"success":true}
|
||||||
|
*/
|
||||||
|
// 检查版本
|
||||||
|
static Future<bool> checkVersion(Map<String, String> params) async {
|
||||||
|
var response = await NetUtils.get(Api.VERSION, params);
|
||||||
|
Version version = Version.formJson(response);
|
||||||
|
var currVersion = version.data.version;
|
||||||
|
PackageInfo packageInfo = await PackageInfo.fromPlatform();
|
||||||
|
var localVersion = packageInfo.version;
|
||||||
|
//相同=0、大于=1、小于=-1
|
||||||
|
// localVersion = '0.0.2';
|
||||||
|
// currVersion = '1.0.6';
|
||||||
|
if (currVersion.compareTo(localVersion) == 1) {
|
||||||
|
return true;
|
||||||
|
} else {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
@ -26,24 +26,24 @@ class FirstPageState extends State<FirstPage> with AutomaticKeepAliveClientMixin
|
|||||||
bool get wantKeepAlive => true;
|
bool get wantKeepAlive => true;
|
||||||
|
|
||||||
|
|
||||||
@override
|
@override
|
||||||
void initState() {
|
void initState() {
|
||||||
super.initState();
|
super.initState();
|
||||||
if (key == null) {
|
if (key == null) {
|
||||||
key = GlobalKey<DisclaimerMsgState>();
|
key = GlobalKey<DisclaimerMsgState>();
|
||||||
// key = const Key('__RIKEY1__');
|
// key = const Key('__RIKEY1__');
|
||||||
//获取sharePre
|
//获取sharePre
|
||||||
_unKnow = _prefs.then((SharedPreferences prefs) {
|
_unKnow = _prefs.then((SharedPreferences prefs) {
|
||||||
return (prefs.getBool('disclaimer::Boolean') ?? false);
|
return (prefs.getBool('disclaimer::Boolean') ?? false);
|
||||||
});
|
});
|
||||||
|
|
||||||
/// 判断是否需要弹出免责声明,已经勾选过不在显示,就不会主动弹
|
/// 判断是否需要弹出免责声明,已经勾选过不在显示,就不会主动弹
|
||||||
_unKnow.then((bool value) {
|
_unKnow.then((bool value) {
|
||||||
new Future.delayed(const Duration(seconds: 1),(){
|
new Future.delayed(const Duration(seconds: 1),(){
|
||||||
if (!value && key.currentState is DisclaimerMsgState && key.currentState.showAlertDialog is Function) {
|
if (!value && key.currentState is DisclaimerMsgState && key.currentState.showAlertDialog is Function) {
|
||||||
key.currentState.showAlertDialog(context);
|
key.currentState.showAlertDialog(context);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -93,15 +93,15 @@ class FirstPageState extends State<FirstPage> with AutomaticKeepAliveClientMixin
|
|||||||
Column(
|
Column(
|
||||||
children: <Widget>[
|
children: <Widget>[
|
||||||
Stack(
|
Stack(
|
||||||
//alignment: const FractionalOffset(0.9, 0.1),//方法一
|
//alignment: const FractionalOffset(0.9, 0.1),//方法一
|
||||||
children: <Widget>[
|
children: <Widget>[
|
||||||
Pagination(),
|
Pagination(),
|
||||||
Positioned(//方法二
|
Positioned(//方法二
|
||||||
top: 10.0,
|
top: 10.0,
|
||||||
left: 0.0,
|
left: 0.0,
|
||||||
child: DisclaimerMsg(key:key,pWidget:this)
|
child: DisclaimerMsg(key:key,pWidget:this)
|
||||||
),
|
),
|
||||||
]),
|
]),
|
||||||
SizedBox(height: 1, child:Container(color: Theme.of(context).primaryColor)),
|
SizedBox(height: 1, child:Container(color: Theme.of(context).primaryColor)),
|
||||||
SizedBox(height: 10),
|
SizedBox(height: 10),
|
||||||
],
|
],
|
||||||
@ -127,7 +127,7 @@ class FirstPageState extends State<FirstPage> with AutomaticKeepAliveClientMixin
|
|||||||
// SizedBox(height: 2, child:Container(color: Theme.of(context).primaryColor)),
|
// SizedBox(height: 2, child:Container(color: Theme.of(context).primaryColor)),
|
||||||
new Expanded(
|
new Expanded(
|
||||||
//child: new List(),
|
//child: new List(),
|
||||||
child: listComp.ListRefresh(getIndexListData,makeCard,headerView)
|
child: listComp.ListRefresh(getIndexListData,makeCard,headerView)
|
||||||
)
|
)
|
||||||
]
|
]
|
||||||
|
|
||||||
|
@ -12,10 +12,10 @@ class _Page {
|
|||||||
}
|
}
|
||||||
|
|
||||||
final List<_Page> _allPages = <_Page>[
|
final List<_Page> _allPages = <_Page>[
|
||||||
_Page('项目1'),
|
_Page('项目1'),
|
||||||
_Page('项目2'),
|
_Page('项目2'),
|
||||||
_Page('项目3'),
|
_Page('项目3'),
|
||||||
_Page('项目4'),
|
_Page('项目4'),
|
||||||
];
|
];
|
||||||
|
|
||||||
class MainPage extends StatelessWidget {
|
class MainPage extends StatelessWidget {
|
||||||
@ -37,7 +37,7 @@ class MainPage extends StatelessWidget {
|
|||||||
centerTitle: true,
|
centerTitle: true,
|
||||||
title: TabLayout(),
|
title: TabLayout(),
|
||||||
actions: <Widget>[
|
actions: <Widget>[
|
||||||
IconButton(
|
IconButton(
|
||||||
icon: Icon(Icons.search),
|
icon: Icon(Icons.search),
|
||||||
onPressed: () {
|
onPressed: () {
|
||||||
pushPage(context, SearchPage(), pageName: "SearchPage");
|
pushPage(context, SearchPage(), pageName: "SearchPage");
|
||||||
@ -67,7 +67,7 @@ class TabLayout extends StatelessWidget {
|
|||||||
indicatorSize: TabBarIndicatorSize.label,
|
indicatorSize: TabBarIndicatorSize.label,
|
||||||
tabs: _allPages
|
tabs: _allPages
|
||||||
.map((_Page page) =>
|
.map((_Page page) =>
|
||||||
Tab(text: page.labelId))
|
Tab(text: page.labelId))
|
||||||
.toList(),
|
.toList(),
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
@ -100,7 +100,7 @@ class TabBarViewLayout extends StatelessWidget {
|
|||||||
print("TabBarViewLayout build.......");
|
print("TabBarViewLayout build.......");
|
||||||
return TabBarView(
|
return TabBarView(
|
||||||
children: _allPages.map((_Page page) {
|
children: _allPages.map((_Page page) {
|
||||||
return buildTabView(context, page);
|
return buildTabView(context, page);
|
||||||
}).toList());
|
}).toList());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -24,6 +24,7 @@ import 'package:flutter_go/resources/widget_name_to_icon.dart';
|
|||||||
const int ThemeColor = 0xFFC91B3A;
|
const int ThemeColor = 0xFFC91B3A;
|
||||||
|
|
||||||
class AppPage extends StatefulWidget {
|
class AppPage extends StatefulWidget {
|
||||||
|
|
||||||
@override
|
@override
|
||||||
State<StatefulWidget> createState() {
|
State<StatefulWidget> createState() {
|
||||||
return _MyHomePageState();
|
return _MyHomePageState();
|
||||||
@ -32,6 +33,7 @@ class AppPage extends StatefulWidget {
|
|||||||
|
|
||||||
class _MyHomePageState extends State<AppPage>
|
class _MyHomePageState extends State<AppPage>
|
||||||
with SingleTickerProviderStateMixin {
|
with SingleTickerProviderStateMixin {
|
||||||
|
|
||||||
SpUtil sp;
|
SpUtil sp;
|
||||||
WidgetControlModel widgetControl = new WidgetControlModel();
|
WidgetControlModel widgetControl = new WidgetControlModel();
|
||||||
SearchHistoryList searchHistoryList;
|
SearchHistoryList searchHistoryList;
|
||||||
@ -40,10 +42,10 @@ class _MyHomePageState extends State<AppPage>
|
|||||||
List<Widget> list = List();
|
List<Widget> list = List();
|
||||||
int _currentIndex = 0;
|
int _currentIndex = 0;
|
||||||
static List tabData = [
|
static List tabData = [
|
||||||
{'text': '业界动态', 'icon': Icon(Icons.language)},
|
// {'text': '业界动态', 'icon': Icon(Icons.language)},
|
||||||
{'text': 'WIDGET', 'icon': Icon(Icons.extension)},
|
{'text': 'WIDGET', 'icon': Icon(Icons.extension)},
|
||||||
{'text': '组件收藏', 'icon': Icon(Icons.favorite)},
|
{'text': '组件收藏', 'icon': Icon(Icons.favorite)},
|
||||||
{'text': '关于手册', 'icon': Icon(Icons.import_contacts)}
|
{'text': '关于手册', 'icon': Icon(Icons.import_contacts)},
|
||||||
];
|
];
|
||||||
|
|
||||||
List<BottomNavigationBarItem> myTabs = [];
|
List<BottomNavigationBarItem> myTabs = [];
|
||||||
@ -62,7 +64,7 @@ class _MyHomePageState extends State<AppPage>
|
|||||||
}
|
}
|
||||||
list
|
list
|
||||||
// ..add(FirstPage())
|
// ..add(FirstPage())
|
||||||
..add(MainPage())
|
// ..add(MainPage())
|
||||||
..add(WidgetPage(Provider.db))
|
..add(WidgetPage(Provider.db))
|
||||||
..add(CollectionPage())
|
..add(CollectionPage())
|
||||||
..add(FourthPage());
|
..add(FourthPage());
|
||||||
@ -98,7 +100,7 @@ class _MyHomePageState extends State<AppPage>
|
|||||||
}
|
}
|
||||||
|
|
||||||
Widget buildSearchInput(BuildContext context) {
|
Widget buildSearchInput(BuildContext context) {
|
||||||
return new SearchInput((value) async {
|
return new SearchInput((value) async {
|
||||||
if (value != '') {
|
if (value != '') {
|
||||||
List<WidgetPoint> list = await widgetControl.search(value);
|
List<WidgetPoint> list = await widgetControl.search(value);
|
||||||
return list
|
return list
|
||||||
@ -107,7 +109,7 @@ class _MyHomePageState extends State<AppPage>
|
|||||||
icon: WidgetName2Icon.icons[item.name] ?? null,
|
icon: WidgetName2Icon.icons[item.name] ?? null,
|
||||||
text: 'widget',
|
text: 'widget',
|
||||||
onTap: () {
|
onTap: () {
|
||||||
onWidgetTap(item, context);
|
onWidgetTap(item, context);
|
||||||
},
|
},
|
||||||
))
|
))
|
||||||
.toList();
|
.toList();
|
||||||
@ -117,18 +119,18 @@ class _MyHomePageState extends State<AppPage>
|
|||||||
}, (value) {}, () {});
|
}, (value) {}, () {});
|
||||||
}
|
}
|
||||||
|
|
||||||
renderAppBar(BuildContext context,Widget widget,int index) {
|
renderAppBar(BuildContext context, Widget widget, int index) {
|
||||||
print('renderAppBar=====>>>>>>${index}');
|
// print('renderAppBar=====>>>>>>${index}');
|
||||||
if(index == 0) {
|
// if (index == 0) {
|
||||||
return null;
|
// return null;
|
||||||
}
|
// }
|
||||||
return AppBar(title: buildSearchInput(context));
|
return AppBar(title: buildSearchInput(context));
|
||||||
}
|
}
|
||||||
|
|
||||||
@override
|
@override
|
||||||
Widget build(BuildContext context) {
|
Widget build(BuildContext context) {
|
||||||
return new Scaffold(
|
return new Scaffold(
|
||||||
appBar: renderAppBar(context,widget,_currentIndex),
|
appBar: renderAppBar(context, widget, _currentIndex),
|
||||||
body: list[_currentIndex],
|
body: list[_currentIndex],
|
||||||
bottomNavigationBar: BottomNavigationBar(
|
bottomNavigationBar: BottomNavigationBar(
|
||||||
items: myTabs,
|
items: myTabs,
|
||||||
|
136
pubspec.lock
136
pubspec.lock
@ -5,105 +5,105 @@ packages:
|
|||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
name: args
|
name: args
|
||||||
url: "https://pub.flutter-io.cn"
|
url: "https://pub.dartlang.org"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "1.5.1"
|
version: "1.5.1"
|
||||||
async:
|
async:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
name: async
|
name: async
|
||||||
url: "https://pub.flutter-io.cn"
|
url: "https://pub.dartlang.org"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "2.2.0"
|
version: "2.0.8"
|
||||||
bloc:
|
bloc:
|
||||||
dependency: "direct main"
|
dependency: "direct main"
|
||||||
description:
|
description:
|
||||||
name: bloc
|
name: bloc
|
||||||
url: "https://pub.flutter-io.cn"
|
url: "https://pub.dartlang.org"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "0.12.0"
|
version: "0.12.0"
|
||||||
boolean_selector:
|
boolean_selector:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
name: boolean_selector
|
name: boolean_selector
|
||||||
url: "https://pub.flutter-io.cn"
|
url: "https://pub.dartlang.org"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "1.0.4"
|
version: "1.0.4"
|
||||||
charcode:
|
charcode:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
name: charcode
|
name: charcode
|
||||||
url: "https://pub.flutter-io.cn"
|
url: "https://pub.dartlang.org"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "1.1.2"
|
version: "1.1.2"
|
||||||
city_pickers:
|
city_pickers:
|
||||||
dependency: "direct main"
|
dependency: "direct main"
|
||||||
description:
|
description:
|
||||||
name: city_pickers
|
name: city_pickers
|
||||||
url: "https://pub.flutter-io.cn"
|
url: "https://pub.dartlang.org"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "0.0.4"
|
version: "0.0.4"
|
||||||
collection:
|
collection:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
name: collection
|
name: collection
|
||||||
url: "https://pub.flutter-io.cn"
|
url: "https://pub.dartlang.org"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "1.14.11"
|
version: "1.14.11"
|
||||||
cookie_jar:
|
cookie_jar:
|
||||||
dependency: "direct main"
|
dependency: "direct main"
|
||||||
description:
|
description:
|
||||||
name: cookie_jar
|
name: cookie_jar
|
||||||
url: "https://pub.flutter-io.cn"
|
url: "https://pub.dartlang.org"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "1.0.0"
|
version: "1.0.0"
|
||||||
csslib:
|
csslib:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
name: csslib
|
name: csslib
|
||||||
url: "https://pub.flutter-io.cn"
|
url: "https://pub.dartlang.org"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "0.16.0"
|
version: "0.16.0"
|
||||||
cupertino_icons:
|
cupertino_icons:
|
||||||
dependency: "direct main"
|
dependency: "direct main"
|
||||||
description:
|
description:
|
||||||
name: cupertino_icons
|
name: cupertino_icons
|
||||||
url: "https://pub.flutter-io.cn"
|
url: "https://pub.dartlang.org"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "0.1.2"
|
version: "0.1.2"
|
||||||
dio:
|
dio:
|
||||||
dependency: "direct main"
|
dependency: "direct main"
|
||||||
description:
|
description:
|
||||||
name: dio
|
name: dio
|
||||||
url: "https://pub.flutter-io.cn"
|
url: "https://pub.dartlang.org"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "2.1.3"
|
version: "2.1.3"
|
||||||
event_bus:
|
event_bus:
|
||||||
dependency: "direct main"
|
dependency: "direct main"
|
||||||
description:
|
description:
|
||||||
name: event_bus
|
name: event_bus
|
||||||
url: "https://pub.flutter-io.cn"
|
url: "https://pub.dartlang.org"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "1.1.0"
|
version: "1.1.0"
|
||||||
firebase_analytics:
|
firebase_analytics:
|
||||||
dependency: "direct main"
|
dependency: "direct main"
|
||||||
description:
|
description:
|
||||||
name: firebase_analytics
|
name: firebase_analytics
|
||||||
url: "https://pub.flutter-io.cn"
|
url: "https://pub.dartlang.org"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "1.2.0+1"
|
version: "1.2.0+1"
|
||||||
firebase_core:
|
firebase_core:
|
||||||
dependency: "direct main"
|
dependency: "direct main"
|
||||||
description:
|
description:
|
||||||
name: firebase_core
|
name: firebase_core
|
||||||
url: "https://pub.flutter-io.cn"
|
url: "https://pub.dartlang.org"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "0.3.4"
|
version: "0.3.4"
|
||||||
fluro:
|
fluro:
|
||||||
dependency: "direct main"
|
dependency: "direct main"
|
||||||
description:
|
description:
|
||||||
name: fluro
|
name: fluro
|
||||||
url: "https://pub.flutter-io.cn"
|
url: "https://pub.dartlang.org"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "1.4.0"
|
version: "1.4.0"
|
||||||
flutter:
|
flutter:
|
||||||
@ -115,21 +115,28 @@ packages:
|
|||||||
dependency: "direct main"
|
dependency: "direct main"
|
||||||
description:
|
description:
|
||||||
name: flutter_bloc
|
name: flutter_bloc
|
||||||
url: "https://pub.flutter-io.cn"
|
url: "https://pub.dartlang.org"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "0.11.1"
|
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:
|
flutter_markdown:
|
||||||
dependency: "direct main"
|
dependency: "direct main"
|
||||||
description:
|
description:
|
||||||
name: flutter_markdown
|
name: flutter_markdown
|
||||||
url: "https://pub.flutter-io.cn"
|
url: "https://pub.dartlang.org"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "0.2.0"
|
version: "0.2.0"
|
||||||
flutter_spinkit:
|
flutter_spinkit:
|
||||||
dependency: "direct main"
|
dependency: "direct main"
|
||||||
description:
|
description:
|
||||||
name: flutter_spinkit
|
name: flutter_spinkit
|
||||||
url: "https://pub.flutter-io.cn"
|
url: "https://pub.dartlang.org"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "3.1.0"
|
version: "3.1.0"
|
||||||
flutter_test:
|
flutter_test:
|
||||||
@ -141,98 +148,119 @@ packages:
|
|||||||
dependency: "direct main"
|
dependency: "direct main"
|
||||||
description:
|
description:
|
||||||
name: flutter_webview_plugin
|
name: flutter_webview_plugin
|
||||||
url: "https://pub.flutter-io.cn"
|
url: "https://pub.dartlang.org"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "0.3.4"
|
version: "0.3.5"
|
||||||
html:
|
html:
|
||||||
dependency: "direct main"
|
dependency: "direct main"
|
||||||
description:
|
description:
|
||||||
name: html
|
name: html
|
||||||
url: "https://pub.flutter-io.cn"
|
url: "https://pub.dartlang.org"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "0.14.0+2"
|
version: "0.14.0+2"
|
||||||
image_picker:
|
image_picker:
|
||||||
dependency: "direct main"
|
dependency: "direct main"
|
||||||
description:
|
description:
|
||||||
name: image_picker
|
name: image_picker
|
||||||
url: "https://pub.flutter-io.cn"
|
url: "https://pub.dartlang.org"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "0.6.0+2"
|
version: "0.6.0+3"
|
||||||
intl:
|
intl:
|
||||||
dependency: "direct main"
|
dependency: "direct main"
|
||||||
description:
|
description:
|
||||||
name: intl
|
name: intl
|
||||||
url: "https://pub.flutter-io.cn"
|
url: "https://pub.dartlang.org"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "0.15.7"
|
version: "0.15.7"
|
||||||
lpinyin:
|
lpinyin:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
name: lpinyin
|
name: lpinyin
|
||||||
url: "https://pub.flutter-io.cn"
|
url: "https://pub.dartlang.org"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "1.0.7"
|
version: "1.0.7"
|
||||||
markdown:
|
markdown:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
name: markdown
|
name: markdown
|
||||||
url: "https://pub.flutter-io.cn"
|
url: "https://pub.dartlang.org"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "2.0.3"
|
version: "2.0.3"
|
||||||
matcher:
|
matcher:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
name: matcher
|
name: matcher
|
||||||
url: "https://pub.flutter-io.cn"
|
url: "https://pub.dartlang.org"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "0.12.5"
|
version: "0.12.3+1"
|
||||||
meta:
|
meta:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
name: meta
|
name: meta
|
||||||
url: "https://pub.flutter-io.cn"
|
url: "https://pub.dartlang.org"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "1.1.6"
|
version: "1.1.6"
|
||||||
|
open_file:
|
||||||
|
dependency: "direct main"
|
||||||
|
description:
|
||||||
|
name: open_file
|
||||||
|
url: "https://pub.dartlang.org"
|
||||||
|
source: hosted
|
||||||
|
version: "2.0.1+2"
|
||||||
|
package_info:
|
||||||
|
dependency: "direct main"
|
||||||
|
description:
|
||||||
|
name: package_info
|
||||||
|
url: "https://pub.dartlang.org"
|
||||||
|
source: hosted
|
||||||
|
version: "0.4.0+3"
|
||||||
path:
|
path:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
name: path
|
name: path
|
||||||
url: "https://pub.flutter-io.cn"
|
url: "https://pub.dartlang.org"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "1.6.2"
|
version: "1.6.2"
|
||||||
path_provider:
|
path_provider:
|
||||||
dependency: "direct main"
|
dependency: "direct main"
|
||||||
description:
|
description:
|
||||||
name: path_provider
|
name: path_provider
|
||||||
url: "https://pub.flutter-io.cn"
|
url: "https://pub.dartlang.org"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "1.0.0"
|
version: "1.1.0"
|
||||||
pedantic:
|
pedantic:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
name: pedantic
|
name: pedantic
|
||||||
url: "https://pub.flutter-io.cn"
|
url: "https://pub.dartlang.org"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "1.5.0"
|
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:
|
quiver:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
name: quiver
|
name: quiver
|
||||||
url: "https://pub.flutter-io.cn"
|
url: "https://pub.dartlang.org"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "2.0.3"
|
version: "2.0.1"
|
||||||
rxdart:
|
rxdart:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
name: rxdart
|
name: rxdart
|
||||||
url: "https://pub.flutter-io.cn"
|
url: "https://pub.dartlang.org"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "0.21.0"
|
version: "0.21.0"
|
||||||
shared_preferences:
|
shared_preferences:
|
||||||
dependency: "direct main"
|
dependency: "direct main"
|
||||||
description:
|
description:
|
||||||
name: shared_preferences
|
name: shared_preferences
|
||||||
url: "https://pub.flutter-io.cn"
|
url: "https://pub.dartlang.org"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "0.4.3"
|
version: "0.4.3"
|
||||||
sky_engine:
|
sky_engine:
|
||||||
@ -244,79 +272,79 @@ packages:
|
|||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
name: source_span
|
name: source_span
|
||||||
url: "https://pub.flutter-io.cn"
|
url: "https://pub.dartlang.org"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "1.5.5"
|
version: "1.5.4"
|
||||||
sqflite:
|
sqflite:
|
||||||
dependency: "direct main"
|
dependency: "direct main"
|
||||||
description:
|
description:
|
||||||
name: sqflite
|
name: sqflite
|
||||||
url: "https://pub.flutter-io.cn"
|
url: "https://pub.dartlang.org"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "1.1.5"
|
version: "1.1.5"
|
||||||
stack_trace:
|
stack_trace:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
name: stack_trace
|
name: stack_trace
|
||||||
url: "https://pub.flutter-io.cn"
|
url: "https://pub.dartlang.org"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "1.9.3"
|
version: "1.9.3"
|
||||||
stream_channel:
|
stream_channel:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
name: stream_channel
|
name: stream_channel
|
||||||
url: "https://pub.flutter-io.cn"
|
url: "https://pub.dartlang.org"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "2.0.0"
|
version: "1.6.8"
|
||||||
string_scanner:
|
string_scanner:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
name: string_scanner
|
name: string_scanner
|
||||||
url: "https://pub.flutter-io.cn"
|
url: "https://pub.dartlang.org"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "1.0.4"
|
version: "1.0.4"
|
||||||
synchronized:
|
synchronized:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
name: synchronized
|
name: synchronized
|
||||||
url: "https://pub.flutter-io.cn"
|
url: "https://pub.dartlang.org"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "2.1.0"
|
version: "2.1.0"
|
||||||
term_glyph:
|
term_glyph:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
name: term_glyph
|
name: term_glyph
|
||||||
url: "https://pub.flutter-io.cn"
|
url: "https://pub.dartlang.org"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "1.1.0"
|
version: "1.1.0"
|
||||||
test_api:
|
test_api:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
name: test_api
|
name: test_api
|
||||||
url: "https://pub.flutter-io.cn"
|
url: "https://pub.dartlang.org"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "0.2.5"
|
version: "0.2.2"
|
||||||
typed_data:
|
typed_data:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
name: typed_data
|
name: typed_data
|
||||||
url: "https://pub.flutter-io.cn"
|
url: "https://pub.dartlang.org"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "1.1.6"
|
version: "1.1.6"
|
||||||
url_launcher:
|
url_launcher:
|
||||||
dependency: "direct main"
|
dependency: "direct main"
|
||||||
description:
|
description:
|
||||||
name: url_launcher
|
name: url_launcher
|
||||||
url: "https://pub.flutter-io.cn"
|
url: "https://pub.dartlang.org"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "5.0.2"
|
version: "5.0.2"
|
||||||
vector_math:
|
vector_math:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
name: vector_math
|
name: vector_math
|
||||||
url: "https://pub.flutter-io.cn"
|
url: "https://pub.dartlang.org"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "2.0.8"
|
version: "2.0.8"
|
||||||
sdks:
|
sdks:
|
||||||
dart: ">=2.2.0 <3.0.0"
|
dart: ">=2.1.0 <3.0.0"
|
||||||
flutter: ">=1.2.1 <2.0.0"
|
flutter: ">=1.2.1 <2.0.0"
|
||||||
|
@ -7,7 +7,7 @@ description: flutter_go
|
|||||||
# Both the version and the builder number may be overridden in flutter
|
# Both the version and the builder number may be overridden in flutter
|
||||||
# build by specifying --build-name and --build-number, respectively.
|
# build by specifying --build-name and --build-number, respectively.
|
||||||
# Read more about versioning at semver.org.
|
# Read more about versioning at semver.org.
|
||||||
version: 1.0.0
|
version: 1.0.6
|
||||||
|
|
||||||
environment:
|
environment:
|
||||||
sdk: ">=2.0.0-dev.68.0 <3.0.0"
|
sdk: ">=2.0.0-dev.68.0 <3.0.0"
|
||||||
@ -28,7 +28,6 @@ dependencies:
|
|||||||
# 本地存储、收藏功能
|
# 本地存储、收藏功能
|
||||||
shared_preferences: ^0.4.3
|
shared_preferences: ^0.4.3
|
||||||
flutter_spinkit: "^3.1.0"
|
flutter_spinkit: "^3.1.0"
|
||||||
path_provider: ^1.0.0
|
|
||||||
dio: ^2.0.15
|
dio: ^2.0.15
|
||||||
flutter_webview_plugin: ^0.3.4
|
flutter_webview_plugin: ^0.3.4
|
||||||
cookie_jar: ^1.0.0
|
cookie_jar: ^1.0.0
|
||||||
@ -41,6 +40,11 @@ dependencies:
|
|||||||
flutter_bloc: ^0.11.1
|
flutter_bloc: ^0.11.1
|
||||||
bloc: ^0.12.0
|
bloc: ^0.12.0
|
||||||
html: ^0.14.0+2
|
html: ^0.14.0+2
|
||||||
|
flutter_downloader: ^1.1.7
|
||||||
|
path_provider: ^1.1.0
|
||||||
|
permission_handler: ^3.0.0
|
||||||
|
open_file: ^2.0.1+2
|
||||||
|
package_info: ^0.4.0+3
|
||||||
|
|
||||||
dev_dependencies:
|
dev_dependencies:
|
||||||
flutter_test:
|
flutter_test:
|
||||||
|
Reference in New Issue
Block a user