Skip to content
Projects
Groups
Snippets
Help
Loading...
Sign in
Toggle navigation
G
gmalpha_flutter
Project
Project
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
mobile
gmalpha_flutter
Commits
0221e2f2
Commit
0221e2f2
authored
Feb 23, 2019
by
ouxiang
Browse files
Options
Browse Files
Download
Plain Diff
merge & fix conflicts
parents
035ceca6
0eb56c93
Expand all
Show whitespace changes
Inline
Side-by-side
Showing
10 changed files
with
692 additions
and
27 deletions
+692
-27
main.dart
lib/main.dart
+119
-0
ALNetWork.dart
lib/netWork/ALNetWork.dart
+195
-0
ALServers.dart
lib/services/ALServers.dart
+3
-1
animationTest.dart
lib/testPage/animationTest.dart
+0
-0
assetsChannel.dart
lib/testPage/assetsChannel.dart
+99
-0
battery.dart
lib/testPage/battery.dart
+0
-0
layoutTest.dart
lib/testPage/layoutTest.dart
+112
-0
netWorkTest.dart
lib/testPage/netWorkTest.dart
+68
-0
pubspec.lock
pubspec.lock
+93
-23
pubspec.yaml
pubspec.yaml
+3
-3
No files found.
lib/main.dart
View file @
0221e2f2
import
'package:flutter/material.dart'
;
<<<<<<<
HEAD
import
'hybrid_stack/hybrid_stack_manager_plugin.dart'
;
import
'app_config.dart'
;
import
'my_app.dart'
;
...
...
@@ -20,7 +21,125 @@ void main() async {
url:
args
[
"url"
],
query:
args
[
"query"
],
params:
args
[
"params"
]);
Router
.
sharedInstance
().
pushPageWithOptionsFromFlutter
(
routeOption:
routeOption
,
animated:
false
);
=======
import
'testPage/battery.dart'
;
import
'testPage/assetsChannel.dart'
;
import
'testPage/layoutTest.dart'
;
import
'testPage/animationTest.dart'
;
import
'testPage/netWorkTest.dart'
;
void
main
(
)
=>
runApp
(
MyApp
());
class
MyApp
extends
StatelessWidget
{
@override
Widget
build
(
BuildContext
context
)
{
return
MaterialApp
(
title:
'Flutter Demo'
,
theme:
ThemeData
(
primarySwatch:
Colors
.
blue
,
),
home:
MyHomePage
(
title:
'Flutter Demo Home Page'
),
routes:
{
"/channeltest"
:
batteryChannelPage
,
"/assetschannel"
:
assetsChannelPage
,
"/layouttest"
:
layoutTestPage
,
"/animationtest"
:
animationTestPage
,
"/networktest"
:
netWorkTestPage
,
},
);
}
Widget
batteryChannelPage
(
BuildContext
context
)
{
return
PlatformChannel
();
}
Widget
assetsChannelPage
(
BuildContext
context
)
{
return
AssestPlatformChannel
();
>>>>>>>
ouxiang_dev
}
Widget
layoutTestPage
(
BuildContext
context
)
{
return
LayoutTest
();
}
Widget
animationTestPage
(
BuildContext
context
)
{
return
AnimationPage
();
}
Widget
netWorkTestPage
(
BuildContext
context
)
{
return
NetWorkTestPage
();
}
}
class
MyHomePage
extends
StatefulWidget
{
MyHomePage
({
Key
key
,
this
.
title
})
:
super
(
key:
key
);
final
String
title
;
@override
_MyHomePageState
createState
()
=>
_MyHomePageState
();
}
class
_MyHomePageState
extends
State
<
MyHomePage
>
{
int
_counter
=
0
;
void
_incrementCounter
()
{
setState
(()
{
_counter
++;
});
}
@override
Widget
build
(
BuildContext
context
)
{
return
Scaffold
(
appBar:
AppBar
(
title:
Text
(
widget
.
title
),
),
body:
Center
(
child:
Column
(
mainAxisAlignment:
MainAxisAlignment
.
center
,
children:
<
Widget
>[
Text
(
'You have pushed the button this many times:'
,
),
Text
(
'
$_counter
'
,
style:
Theme
.
of
(
context
).
textTheme
.
display1
,
),
FlatButton
(
child:
Text
(
'channel test'
),
color:
Colors
.
greenAccent
,
onPressed:
(){
Navigator
.
pushNamed
(
context
,
"/channeltest"
);},
),
FlatButton
(
child:
Text
(
'assets test'
),
color:
Colors
.
greenAccent
,
onPressed:
(){
Navigator
.
pushNamed
(
context
,
"/assetschannel"
);},
),
FlatButton
(
child:
Text
(
'layout test'
),
color:
Colors
.
greenAccent
,
onPressed:
(){
Navigator
.
pushNamed
(
context
,
"/layouttest"
);},
),
FlatButton
(
child:
Text
(
'animation test'
),
color:
Colors
.
greenAccent
,
onPressed:
(){
Navigator
.
pushNamed
(
context
,
"/animationtest"
);},
),
FlatButton
(
child:
Text
(
'network test'
),
color:
Colors
.
greenAccent
,
onPressed:
(){
Navigator
.
pushNamed
(
context
,
"/networktest"
);},
),
],
),
),
floatingActionButton:
FloatingActionButton
(
onPressed:
_incrementCounter
,
tooltip:
'Increment'
,
child:
Icon
(
Icons
.
add
),
),
// This trailing comma makes auto-formatting nicer for build methods.
);
}
}
lib/netWork/ALNetWork.dart
0 → 100644
View file @
0221e2f2
import
'package:dio/dio.dart'
;
import
'dart:async'
;
import
'dart:convert'
;
class
NetworkSuccess
{
NetworkSuccess
({
this
.
data
});
final
Map
data
;
Map
get
dataMap
{
if
(
this
.
data
.
runtimeType
==
Map
)
{
return
data
;
}
else
return
null
;
}
}
class
NetworkError
{
NetworkError
({
this
.
error
});
final
Map
error
;
int
get
errorCode
{
if
(
this
.
error
.
runtimeType
==
Map
)
{
return
error
[
'errorCode'
];
}
else
return
null
;
}
}
class
ALURL
{
ALURL
({
this
.
api
})
:
assert
(
api
!=
null
);
final
String
api
;
static
final
baseUrl
=
'http://earth.igengmei.com'
;
String
get
originUrl
=>
(
baseUrl
+
api
);
}
class
ALNetworkHeader
{
BaseOptions
get
options
{
BaseOptions
option
=
BaseOptions
();
option
.
headers
=
this
.
header
;
return
option
;
}
Map
<
String
,
dynamic
>
get
header
{
return
{
'Host'
:
'earth.igengmei.com'
,
'Accept'
:
'*/*'
,
'Cookie'
:
'_gm_token=fb20fe1550833249; sessionid=qntnckxv4n4nzrl49jmaesc5ylru92yt; _gtid=ae355f92310911e9905700163e0a7a995288'
,
'User-Agent'
:
'GMAlpha/1.3.0 (iPhone; iOS 12.1.2; Scale/2.00)'
,
'Accept-Language'
:
'en-CN;q=1, zh-Hans-CN;q=0.9'
,
'Accept-Encoding'
:
'gzip, deflate'
,
'Connection'
:
'keep-alive'
};
}
Map
<
String
,
dynamic
>
get
params
{
return
{
'platform'
:
'iPhone'
,
'os_version'
:
'12.1.2'
,
'version'
:
'1.3.0'
,
'model'
:
'iPhone%206s'
,
'release'
:
'0'
,
'idfa'
:
'119A3567-6C81-40EA-A3ED-A63F7DCAD86B'
,
'idfv'
:
'78BE2D94-7252-4C18-A816-2CEE6350B076'
,
'device_id'
:
'119A3567-6C81-40EA-A3ED-A63F7DCAD86B'
,
'channel'
:
'App%20Store'
,
'app_name'
:
'gengmeiios'
,
'current_city_id'
:
'worldwide'
,
'lat'
:
'0'
,
'lng'
:
'0'
,
'is_WiFi'
:
'(null)'
,
'phone_id'
:
'iPhone8'
};
}
}
// 管理任务
class
ALNetworkTask
{
ALNetworkTask
({
this
.
serviceInstance
,
this
.
networkContext
,
this
.
response
});
final
Dio
serviceInstance
;
final
ALNetwork
networkContext
;
Response
response
;
void
cancle
(
String
api
)
{
// CancelToken
}
}
typedef
NetworkSuccessCallback
=
void
Function
(
NetworkSuccess
success
);
typedef
NetWorkErrorCallback
=
void
Function
(
NetworkError
error
);
typedef
ProgressCallback
=
void
Function
(
int
count
,
int
total
);
class
ALNetwork
{
/**
* 任务映射表
* 外部可以通过 ALNetwork.taskMap 获取
*/
static
Map
<
String
,
ALNetworkTask
>
taskMap
=
{};
const
ALNetwork
(
{
this
.
success
,
this
.
error
,
this
.
progress
,
this
.
api
,
this
.
params
,
this
.
formData
})
:
assert
(
api
!=
null
);
final
NetworkSuccessCallback
success
;
final
NetWorkErrorCallback
error
;
final
ProgressCallback
progress
;
final
String
api
;
final
Map
params
;
final
FormData
formData
;
ALURL
get
url
=>
ALURL
(
api:
this
.
api
);
///post
Future
<
void
>
post
()
async
{
ALNetworkTask
task
=
_initNetworkEngin
();
task
.
response
=
await
task
.
serviceInstance
.
post
(
this
.
url
.
originUrl
,
data:
this
.
params
);
_handleNetworkService
(
task
.
response
);
}
/**
* FormData formData = new FormData.from({
"name": "simon",
"age": 25,
});
*/
Future
<
void
>
postFormData
()
async
{
ALNetworkTask
task
=
_initNetworkEngin
();
task
.
response
=
await
task
.
serviceInstance
.
post
(
this
.
url
.
originUrl
,
data:
this
.
formData
);
_handleNetworkService
(
task
.
response
);
}
///get
Future
<
void
>
excuteGet
()
async
{
ALNetworkTask
task
=
_initNetworkEngin
();
task
.
response
=
await
task
.
serviceInstance
.
get
(
this
.
url
.
originUrl
,
queryParameters:
ALNetworkHeader
().
params
);
_handleNetworkService
(
task
.
response
);
}
/**
* FormData formData = new FormData.from({
"name": "wendux",
"age": 25,
"file1": new UploadFileInfo(new File("./upload.txt"), "upload1.txt"),
// upload with bytes (List<int>)
"file2": new UploadFileInfo.fromBytes(
utf8.encode("hello world"), "word.txt"),
// Pass multiple files within an Array
"files": [
new UploadFileInfo(new File("./example/upload.txt"), "upload.txt"),
new UploadFileInfo(new File("./example/upload.txt"), "upload.txt")
]
});
*/
Future
<
void
>
upload
()
async
{
ALNetworkTask
task
=
_initNetworkEngin
();
task
.
response
=
await
task
.
serviceInstance
.
post
(
this
.
url
.
originUrl
,
data:
this
.
formData
,
onSendProgress:
this
.
progress
);
_handleNetworkService
(
task
.
response
);
}
///download
Future
<
void
>
download
(
String
filePath
)
async
{
ALNetworkTask
task
=
_initNetworkEngin
();
task
.
response
=
await
task
.
serviceInstance
.
download
(
this
.
url
.
originUrl
,
filePath
,
onReceiveProgress:
this
.
progress
);
_handleNetworkService
(
task
.
response
);
}
ALNetworkTask
_initNetworkEngin
(){
Response
response
;
Dio
dio
=
new
Dio
();
dio
.
options
=
ALNetworkHeader
().
options
;
ALNetworkTask
task
=
ALNetworkTask
(
serviceInstance:
dio
,
response:
response
,
networkContext:
this
);
//handle task
taskMap
[
this
.
api
]
=
task
;
return
task
;
}
void
_handleNetworkService
(
Response
response
)
{
var
data
=
jsonDecode
(
response
.
toString
());
if
(
data
.
runtimeType
==
Map
&&
response
.
statusCode
==
200
){
if
(
data
[
'error'
]
==
0
){
this
.
success
(
NetworkSuccess
(
data:
data
));
}
else
{
this
.
error
(
NetworkError
(
error:
data
));
}
}
else
{
this
.
error
(
NetworkError
(
error:
data
));
}
//remove task
taskMap
.
remove
(
this
.
api
);
}
}
\ No newline at end of file
lib/services/ALServers.dart
View file @
0221e2f2
...
...
@@ -19,7 +19,6 @@ class ALServers {
static
const
int
ConnetTimeOut
=
5000
;
// 连接超时
static
const
int
ReceiveTimeOut
=
3000
;
// 接收超时
static
const
String
API_SETTING_COUNTRYLIST
=
'/api/v1/countries'
;
//国家列表
static
const
String
API_LOGOUT
=
'/api/account/logout'
;
// 注销
static
const
String
API_ACCOUNT_LOGIN_PWD
=
'/api/account/login_pwd'
;
// 账号密码登录
...
...
@@ -27,8 +26,11 @@ class ALServers {
static
const
String
API_ACCOUNT_REGISTER
=
'/api/account/register'
;
// 用户注册
static
const
String
API_ACCOUNT_GETVFC
=
'/api/account/get_vfc'
;
// 获取验证码
static
const
String
API_ACCOUNT_THIRDPART
=
'/api/account/thirdparty_login'
;
// 三方账户登录
<<<<<<<
HEAD
static
const
String
API_ACCOUNT_SUGGESTION
=
"/api/v1/suggestion"
;
// 意见与建议
=======
>>>>>>>
ouxiang_dev
// HOST
}
// HOST
...
...
lib/testPage/animationTest.dart
0 → 100644
View file @
0221e2f2
This diff is collapsed.
Click to expand it.
lib/testPage/assetsChannel.dart
0 → 100644
View file @
0221e2f2
import
'dart:async'
;
import
'dart:typed_data'
;
import
'package:flutter/material.dart'
;
import
'package:flutter/services.dart'
;
class
AssestPlatformChannel
extends
StatefulWidget
{
@override
_AssestPlatformChannelState
createState
()
=>
_AssestPlatformChannelState
();
}
class
_AssestPlatformChannelState
extends
State
<
AssestPlatformChannel
>
{
static
const
MethodChannel
methodChannel
=
MethodChannel
(
'GMAssetsMethodChannelName'
);
static
const
EventChannel
eventChannel
=
EventChannel
(
'GMAssetsEventChannelName'
);
Uint8List
_imageData
;
String
_tttt
=
'ssss'
;
Future
<
void
>
_editPortrait
()
async
{
Uint8List
imageData
;
try
{
final
result
=
await
methodChannel
.
invokeMethod
(
'editPortrait'
);
imageData
=
result
;
}
on
PlatformException
{
imageData
=
null
;
}
setState
(()
{
_imageData
=
imageData
;
_tttt
=
_imageData
.
runtimeType
.
toString
();
});
}
@override
void
initState
()
{
super
.
initState
();
eventChannel
.
receiveBroadcastStream
().
listen
(
_onEvent
,
onError:
_onError
);
}
void
_onEvent
(
Object
event
)
{
setState
(()
{});
}
void
_onError
(
Object
error
)
{
setState
(()
{});
}
@override
Widget
build
(
BuildContext
context
)
{
return
Material
(
child:
Scaffold
(
appBar:
AppBar
(
title:
Text
(
'editPortrait test'
),
),
body:
Center
(
child:
Column
(
mainAxisAlignment:
MainAxisAlignment
.
spaceEvenly
,
children:
<
Widget
>[
Column
(
mainAxisAlignment:
MainAxisAlignment
.
center
,
children:
<
Widget
>[
Text
(
_tttt
,
key:
const
Key
(
'editPortrait'
)),
Padding
(
padding:
const
EdgeInsets
.
all
(
16.0
),
child:
RaisedButton
(
child:
const
Text
(
'editPortrait'
),
onPressed:
_editPortrait
,
),
),
Container
(
color:
Colors
.
pink
[
300
],
width:
300
,
height:
300
,
child:
_imageWidget
()
)
],
),
],
),
),
),
);
}
Widget
_imageWidget
(){
if
(
_imageData
!=
null
)
{
return
Image
.
memory
(
_imageData
,
width:
200
,
height:
200
,
);
}
else
{
return
Center
(
child:
Text
(
'I am not image'
+
_tttt
),
);
}
}
}
lib/battery.dart
→
lib/
testPage/
battery.dart
View file @
0221e2f2
File moved
lib/testPage/layoutTest.dart
0 → 100644
View file @
0221e2f2
import
'package:flutter/material.dart'
;
import
'package:flutter/rendering.dart'
;
class
LayoutTest
extends
StatefulWidget
{
@override
_LayoutTestState
createState
()
=>
_LayoutTestState
();
}
class
_LayoutTestState
extends
State
<
LayoutTest
>
{
@override
Widget
build
(
BuildContext
context
)
{
return
Scaffold
(
appBar:
AppBar
(
title:
Text
(
'Layout Test'
),
),
body:
Container
(
padding:
EdgeInsets
.
all
(
32.0
),
child:
Center
(
child:
Column
(
children:
<
Widget
>[
_renderBoxTest
(),
_containerTestWidget
()
],
),
),
),
);
}
Widget
_renderBoxTest
(
){
return
Container
(
color:
Colors
.
greenAccent
,
constraints:
BoxConstraints
(
maxWidth:
double
.
infinity
,
minWidth:
200.0
,
maxHeight:
200
,
minHeight:
100.0
),
child:
Stingy
(
child:
Container
(
color:
Colors
.
pink
[
200
],
),
),
);
}
// www.baidu.com/img/bd_logo1.png
Widget
_containerTestWidget
(){
return
Container
(
constraints:
BoxConstraints
.
expand
(
height:
Theme
.
of
(
context
).
textTheme
.
display1
.
fontSize
*
1.1
+
200.0
,
),
padding:
const
EdgeInsets
.
all
(
8.0
),
color:
Colors
.
greenAccent
.
shade700
,
alignment:
Alignment
.
bottomCenter
,
child:
Text
(
'Hello World'
,
style:
Theme
.
of
(
context
).
textTheme
.
display1
.
copyWith
(
color:
Colors
.
orange
[
200
])),
foregroundDecoration:
BoxDecoration
(
image:
DecorationImage
(
image:
NetworkImage
(
'https://www.example.com/images/frame.png'
),
centerSlice:
Rect
.
fromLTRB
(
270.0
,
180.0
,
1360.0
,
730.0
),
),
),
transform:
Matrix4
.
rotationZ
(
0.1
),
);
}
}
class
Stingy
extends
SingleChildRenderObjectWidget
{
Stingy
({
Widget
child
})
:
super
(
child:
child
);
@override
RenderObject
createRenderObject
(
BuildContext
context
)
{
// TODO: implement createRenderObject
return
RenderStingy
();
}
}
class
RenderStingy
extends
RenderShiftedBox
{
RenderStingy
()
:
super
(
null
);
// 绘制方法
@override
void
paint
(
PaintingContext
context
,
Offset
offset
)
{
// TODO: implement paint
super
.
paint
(
context
,
offset
);
}
// 布局方法
@override
void
performLayout
()
{
// 布局 child 确定 child 的 size
child
.
layout
(
BoxConstraints
(
minHeight:
0.0
,
maxHeight:
constraints
.
minHeight
,
minWidth:
0.0
,
maxWidth:
constraints
.
minWidth
),
parentUsesSize:
true
);
print
(
'constraints:
$constraints
'
);
// child 的 Offset
final
BoxParentData
childParentData
=
child
.
parentData
;
childParentData
.
offset
=
Offset
(
constraints
.
maxWidth
-
child
.
size
.
width
,
constraints
.
maxHeight
-
child
.
size
.
height
);
print
(
'childParentData:
$childParentData
'
);
// 确定自己(父节点)的大小,并重绘父节点。不重设,不能触发重绘,例如在热重载的情景中,重设container.maxHeight,无效
size
=
Size
(
constraints
.
maxWidth
,
constraints
.
maxHeight
);
print
(
'size:
$size
'
);
}
}
lib/testPage/netWorkTest.dart
0 → 100644
View file @
0221e2f2
import
'package:flutter/material.dart'
;
import
'package:my_flutter/netWork/ALNetWork.dart'
;
void
main
(
)
=>
runApp
(
MaterialApp
(
home:
NetWorkTestPage
(),
));
class
NetWorkTestPage
extends
StatefulWidget
{
@override
_NetWorkTestPageState
createState
()
=>
_NetWorkTestPageState
();
}
class
_NetWorkTestPageState
extends
State
<
NetWorkTestPage
>
{
String
_string
=
'lalala'
;
@override
Widget
build
(
BuildContext
context
)
{
return
Scaffold
(
appBar:
AppBar
(
title:
Text
(
'NewtWork Test Page'
),
),
body:
Container
(
padding:
EdgeInsets
.
all
(
32.0
),
child:
Center
(
child:
Column
(
children:
<
Widget
>[
FlatButton
(
child:
Text
(
'newtWorkTest'
),
color:
Colors
.
greenAccent
,
onPressed:
_netWork
,
),
Container
(
color:
Colors
.
greenAccent
,
constraints:
BoxConstraints
(
maxWidth:
double
.
infinity
,
minWidth:
200.0
,
maxHeight:
500
,
minHeight:
200.0
),
child:
Text
(
'data:'
+
_string
),
),
],
),
),
),
);
}
void
_netWork
()
{
ALNetwork
(
success:
(
NetworkSuccess
success
){
print
(
success
.
data
);
setState
(()
{
_string
=
success
.
data
.
toString
();
});
},
error:
(
NetworkError
error
){
print
(
error
.
error
);
setState
(()
{
_string
=
error
.
error
.
toString
();
});
},
api:
'/api/v1/index'
)
..
excuteGet
();
}
}
\ No newline at end of file
pubspec.lock
View file @
0221e2f2
# Generated by pub
# See https://www.dartlang.org/tools/pub/glossary#lockfile
packages:
archive:
dependency: transitive
description:
name: archive
url: "https://pub.dartlang.org"
source: hosted
version: "2.0.8"
args:
dependency: transitive
description:
name: args
url: "https://pub.dartlang.org"
source: hosted
version: "1.5.1"
async:
dependency: transitive
description:
name: async
url: "https://pub.
flutter-io.cn
"
url: "https://pub.
dartlang.org
"
source: hosted
version: "2.0.8"
boolean_selector:
dependency: transitive
description:
name: boolean_selector
url: "https://pub.
flutter-io.cn
"
url: "https://pub.
dartlang.org
"
source: hosted
version: "1.0.4"
charcode:
dependency: transitive
description:
name: charcode
url: "https://pub.
flutter-io.cn
"
url: "https://pub.
dartlang.org
"
source: hosted
version: "1.1.2"
collection:
dependency: transitive
description:
name: collection
url: "https://pub.
flutter-io.cn
"
url: "https://pub.
dartlang.org
"
source: hosted
version: "1.14.11"
convert:
dependency: transitive
description:
name: convert
url: "https://pub.dartlang.org"
source: hosted
version: "2.1.1"
cookie_jar:
dependency: transitive
description:
name: cookie_jar
url: "https://pub.
flutter-io.cn
"
url: "https://pub.
dartlang.org
"
source: hosted
version: "1.0.0"
crypto:
dependency: transitive
description:
name: crypto
url: "https://pub.dartlang.org"
source: hosted
version: "2.0.6"
cupertino_icons:
dependency: "direct main"
description:
name: cupertino_icons
url: "https://pub.
flutter-io.cn
"
url: "https://pub.
dartlang.org
"
source: hosted
version: "0.1.2"
device_info:
...
...
@@ -54,9 +82,23 @@ packages:
dependency: "direct main"
description:
name: dio
url: "https://pub.
flutter-io.cn
"
url: "https://pub.
dartlang.org
"
source: hosted
version: "2.0.10"
event_bus:
dependency: "direct main"
description:
name: event_bus
url: "https://pub.dartlang.org"
source: hosted
version: "1.0.3"
fluro:
dependency: "direct main"
description:
name: fluro
url: "https://pub.dartlang.org"
source: hosted
version: "1.4.0"
flutter:
dependency: "direct main"
description: flutter
...
...
@@ -67,53 +109,74 @@ packages:
description: flutter
source: sdk
version: "0.0.0"
hybrid_stack_manager:
dependency: "direct main"
description:
name: hybrid_stack_manager
url: "https://pub.dartlang.org"
source: hosted
version: "0.1.1"
image:
dependency: transitive
description:
name: image
url: "https://pub.dartlang.org"
source: hosted
version: "2.0.7"
json_annotation:
dependency: "direct main"
description:
name: json_annotation
url: "https://pub.
flutter-io.cn
"
url: "https://pub.
dartlang.org
"
source: hosted
version: "2.0.0"
matcher:
dependency: transitive
description:
name: matcher
url: "https://pub.
flutter-io.cn
"
url: "https://pub.
dartlang.org
"
source: hosted
version: "0.12.3+1"
meta:
dependency: transitive
description:
name: meta
url: "https://pub.
flutter-io.cn
"
url: "https://pub.
dartlang.org
"
source: hosted
version: "1.1.6"
path:
dependency: transitive
description:
name: path
url: "https://pub.
flutter-io.cn
"
url: "https://pub.
dartlang.org
"
source: hosted
version: "1.6.2"
path_provider:
dependency: "direct main"
description:
name: path_provider
url: "https://pub.flutter-io.cn"
url: "https://pub.dartlang.org"
source: hosted
version: "0.4.1"
petitparser:
dependency: transitive
description:
name: petitparser
url: "https://pub.dartlang.org"
source: hosted
version: "
0.5.0+
1"
version: "
2.1.
1"
quiver:
dependency: transitive
description:
name: quiver
url: "https://pub.
flutter-io.cn
"
url: "https://pub.
dartlang.org
"
source: hosted
version: "2.0.1"
shared_preferences:
dependency: "direct main"
description:
name: shared_preferences
url: "https://pub.
flutter-io.cn
"
url: "https://pub.
dartlang.org
"
source: hosted
version: "0.4.3"
sky_engine:
...
...
@@ -125,58 +188,65 @@ packages:
dependency: transitive
description:
name: source_span
url: "https://pub.
flutter-io.cn
"
url: "https://pub.
dartlang.org
"
source: hosted
version: "1.4.1"
stack_trace:
dependency: transitive
description:
name: stack_trace
url: "https://pub.
flutter-io.cn
"
url: "https://pub.
dartlang.org
"
source: hosted
version: "1.9.3"
stream_channel:
dependency: transitive
description:
name: stream_channel
url: "https://pub.
flutter-io.cn
"
url: "https://pub.
dartlang.org
"
source: hosted
version: "1.6.8"
string_scanner:
dependency: transitive
description:
name: string_scanner
url: "https://pub.
flutter-io.cn
"
url: "https://pub.
dartlang.org
"
source: hosted
version: "1.0.4"
term_glyph:
dependency: transitive
description:
name: term_glyph
url: "https://pub.
flutter-io.cn
"
url: "https://pub.
dartlang.org
"
source: hosted
version: "1.0.1"
test_api:
dependency: transitive
description:
name: test_api
url: "https://pub.
flutter-io.cn
"
url: "https://pub.
dartlang.org
"
source: hosted
version: "0.2.1"
typed_data:
dependency: transitive
description:
name: typed_data
url: "https://pub.
flutter-io.cn
"
url: "https://pub.
dartlang.org
"
source: hosted
version: "1.1.6"
vector_math:
dependency: transitive
description:
name: vector_math
url: "https://pub.
flutter-io.cn
"
url: "https://pub.
dartlang.org
"
source: hosted
version: "2.0.8"
xml:
dependency: transitive
description:
name: xml
url: "https://pub.dartlang.org"
source: hosted
version: "3.3.1"
sdks:
dart: ">=2.0.0 <3.0.0"
flutter: ">=0.1.4 <2.0.0"
pubspec.yaml
View file @
0221e2f2
...
...
@@ -21,14 +21,14 @@ dependencies:
sdk
:
flutter
cupertino_icons
:
^0.1.2
fluro
:
^1.3.4
hybrid_stack_manager
:
0.1.1
json_annotation
:
^2.0.0
# 网络
dio
:
^2.0.0
# 数据存储
shared_preferences
:
^0.4.2
device_info
:
^0.4.0
path_provider
:
^0.5.0
event_bus
:
^1.0.1
dev_dependencies
:
flutter_test
:
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment