Skip to content
项目
群组
代码片段
帮助
当前项目
正在载入...
登录 / 注册
切换导航面板
B
book-app
项目
项目
详情
活动
周期分析
仓库
仓库
文件
提交
分支
标签
贡献者
图表
比较
统计图
议题
0
议题
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
CI / CD
CI / CD
流水线
作业
日程
统计图
Wiki
Wiki
代码片段
代码片段
成员
成员
折叠边栏
关闭边栏
活动
图像
聊天
创建新问题
作业
提交
问题看板
Open sidebar
EzijingWeb
book-app
Commits
15eff61b
提交
15eff61b
authored
1月 21, 2024
作者:
maodou
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
1:搜索页面搜索结果显示
2:我的-帮助中心功能及帮助中心内容显示
上级
e87a8a03
显示空白字符变更
内嵌
并排
正在显示
16 个修改的文件
包含
783 行增加
和
213 行删除
+783
-213
mine.dart
lib/apis/mine.dart
+75
-71
mine.dart
lib/models/mine.dart
+159
-34
controller.dart
lib/pages/help_center/controller.dart
+70
-0
index.dart
lib/pages/help_center/index.dart
+20
-0
view.dart
lib/pages/help_center/view.dart
+62
-0
item.dart
lib/pages/help_center/widgets/item.dart
+47
-0
controller.dart
lib/pages/help_cneter_content/controller.dart
+20
-0
index.dart
lib/pages/help_cneter_content/index.dart
+15
-0
view.dart
lib/pages/help_cneter_content/view.dart
+77
-0
view.dart
lib/pages/mine/view.dart
+6
-0
controller.dart
lib/pages/search/controller.dart
+54
-1
index.dart
lib/pages/search/index.dart
+3
-0
view.dart
lib/pages/search/view.dart
+53
-9
index.dart
lib/routes/index.dart
+2
-0
routes.dart
lib/routes/routes.dart
+22
-0
pubspec.lock
pubspec.lock
+98
-98
没有找到文件。
lib/apis/mine.dart
浏览文件 @
15eff61b
part of
apis
;
abstract
class
MineAPI
{
/// 1、个人信息以及8个数据
///
static
Future
<
UserInfoModel
>
userInfo
()
async
{
static
Future
<
UserInfoModel
>
userInfo
()
async
{
final
result
=
await
HttpService
.
to
.
post
(
'/v1/members/Information/getMyStatistics'
,
params:
{},
);
if
(
result
.
data
is
!
Map
)
return
UserInfoModel
();
if
(
result
.
data
is
!
Map
)
return
UserInfoModel
();
return
UserInfoModel
.
fromJson
(
result
.
data
);
}
/// 2、我的收藏
static
Future
<
List
<
CourseModel
>>
love
({
static
Future
<
List
<
CourseModel
>>
love
({
int
page
=
1
,
int
limit
=
10
,
})
async
{
...
...
@@ -26,14 +25,14 @@ abstract class MineAPI {
},
);
if
(
result
.
data
is
!
Map
&&
result
.
data
[
'list'
]
is
!
List
)
return
[];
return
List
.
generate
(
result
.
data
[
'list'
].
length
,
(
index
){
return
List
.
generate
(
result
.
data
[
'list'
].
length
,
(
index
)
{
return
CourseModel
.
fromJson
(
result
.
data
[
'list'
][
index
]);
});
}
/// 3、笔记
///
static
Future
<
List
<
CourseModel
>>
note
({
static
Future
<
List
<
CourseModel
>>
note
({
int
page
=
1
,
int
limit
=
10
,
})
async
{
...
...
@@ -45,14 +44,14 @@ abstract class MineAPI {
},
);
if
(
result
.
data
is
!
Map
&&
result
.
data
[
'list'
]
is
!
List
)
return
[];
return
List
.
generate
(
result
.
data
[
'list'
].
length
,
(
index
){
return
List
.
generate
(
result
.
data
[
'list'
].
length
,
(
index
)
{
return
CourseModel
.
fromJson
(
result
.
data
[
'list'
][
index
]);
});
}
/// 4、错题
///
static
Future
<
List
<
CourseModel
>>
wrong
({
static
Future
<
List
<
CourseModel
>>
wrong
({
int
page
=
1
,
int
limit
=
10
,
})
async
{
...
...
@@ -64,14 +63,14 @@ abstract class MineAPI {
},
);
if
(
result
.
data
is
!
Map
&&
result
.
data
[
'list'
]
is
!
List
)
return
[];
return
List
.
generate
(
result
.
data
[
'list'
].
length
,
(
index
){
return
List
.
generate
(
result
.
data
[
'list'
].
length
,
(
index
)
{
return
CourseModel
.
fromJson
(
result
.
data
[
'list'
][
index
]);
});
}
/// 5、紫金币记录
///
static
Future
<
List
<
RecordModel
>>
coin
({
static
Future
<
List
<
RecordModel
>>
coin
({
int
page
=
1
,
int
limit
=
10
,
})
async
{
...
...
@@ -83,14 +82,14 @@ abstract class MineAPI {
},
);
if
(
result
.
data
is
!
Map
&&
result
.
data
[
'list'
]
is
!
List
)
return
[];
return
List
.
generate
(
result
.
data
[
'list'
].
length
,
(
index
){
return
List
.
generate
(
result
.
data
[
'list'
].
length
,
(
index
)
{
return
RecordModel
.
fromJson
(
result
.
data
[
'list'
][
index
]);
});
}
/// 6、积分记录
///
static
Future
<
List
<
RecordModel
>>
point
({
static
Future
<
List
<
RecordModel
>>
point
({
int
page
=
1
,
int
limit
=
10
,
})
async
{
...
...
@@ -102,14 +101,14 @@ abstract class MineAPI {
},
);
if
(
result
.
data
is
!
Map
&&
result
.
data
[
'list'
]
is
!
List
)
return
[];
return
List
.
generate
(
result
.
data
[
'list'
].
length
,
(
index
){
return
List
.
generate
(
result
.
data
[
'list'
].
length
,
(
index
)
{
return
RecordModel
.
fromJson
(
result
.
data
[
'list'
][
index
]);
});
}
/// 7、讨论
///
static
Future
<
List
<
CourseModel
>>
discuss
({
static
Future
<
List
<
CourseModel
>>
discuss
({
int
page
=
1
,
int
limit
=
10
,
})
async
{
...
...
@@ -121,36 +120,31 @@ abstract class MineAPI {
},
);
if
(
result
.
data
is
!
Map
&&
result
.
data
[
'list'
]
is
!
List
)
return
[];
return
List
.
generate
(
result
.
data
[
'list'
].
length
,
(
index
){
return
List
.
generate
(
result
.
data
[
'list'
].
length
,
(
index
)
{
return
CourseModel
.
fromJson
(
result
.
data
[
'list'
][
index
]);
});
}
/// 8、优惠券列表
///
static
Future
<
List
<
CouponModel
>>
coupon
({
static
Future
<
List
<
CouponModel
>>
coupon
({
int
page
=
1
,
int
limit
=
10
,
required
int
type
,
})
async
{
final
result
=
await
HttpService
.
to
.
post
(
'/v1/coupon/Coupon/getCouponRecordListSAll'
,
params:
{
'page'
:
page
,
'page_size'
:
limit
,
'type'
:
type
},
params:
{
'page'
:
page
,
'page_size'
:
limit
,
'type'
:
type
},
);
if
(
result
.
data
is
!
Map
&&
result
.
data
[
'list'
]
is
!
List
)
return
[];
return
List
.
generate
(
result
.
data
[
'list'
].
length
,
(
index
){
return
List
.
generate
(
result
.
data
[
'list'
].
length
,
(
index
)
{
return
CouponModel
.
fromJson
(
result
.
data
[
'list'
][
index
]);
});
}
/// 9、获取最新版本
///
static
Future
<
UModel
>
update
()
async
{
static
Future
<
UModel
>
update
()
async
{
final
result
=
await
HttpService
.
to
.
post
(
'/v1/members/Information/getVersion'
,
params:
{},
...
...
@@ -160,7 +154,7 @@ abstract class MineAPI {
}
/// 10、版本介绍
static
Future
<
List
<
VersionModel
>>
versions
({
static
Future
<
List
<
VersionModel
>>
versions
({
int
page
=
1
,
int
limit
=
10
,
})
async
{
...
...
@@ -172,33 +166,28 @@ abstract class MineAPI {
},
);
if
(
result
.
data
is
!
Map
&&
result
.
data
[
'list'
]
is
!
List
)
return
[];
return
List
.
generate
(
result
.
data
[
'list'
].
length
,
(
index
){
return
List
.
generate
(
result
.
data
[
'list'
].
length
,
(
index
)
{
return
VersionModel
.
fromJson
(
result
.
data
[
'list'
][
index
]);
});
}
/// 11、修改用户信息
///
static
Future
<
bool
>
changeInfo
({
String
?
name
,
num
?
sex
,
String
?
headImg
})
async
{
Map
<
String
,
dynamic
>
params
=
{};
if
(
name
!=
null
){
static
Future
<
bool
>
changeInfo
(
{
String
?
name
,
num
?
sex
,
String
?
headImg
})
async
{
Map
<
String
,
dynamic
>
params
=
{};
if
(
name
!=
null
)
{
params
[
'name'
]
=
name
;
}
if
(
sex
!=
null
){
if
(
sex
!=
null
)
{
params
[
'sex'
]
=
sex
;
}
if
(
headImg
!=
null
){
if
(
headImg
!=
null
)
{
params
[
'head_img'
]
=
headImg
;
}
final
result
=
await
HttpService
.
to
.
post
(
'/v1/members/Information/editInformation'
,
params:
params
);
if
(
result
.
data
is
Map
&&
result
.
data
[
'is_success'
]
==
1
){
final
result
=
await
HttpService
.
to
.
post
(
'/v1/members/Information/editInformation'
,
params:
params
);
if
(
result
.
data
is
Map
&&
result
.
data
[
'is_success'
]
==
1
)
{
return
true
;
}
return
false
;
...
...
@@ -206,87 +195,102 @@ abstract class MineAPI {
/// 12、笔记详情列表
///
static
Future
<
List
<
NoteModel
>>
noteList
({
int
page
=
1
,
static
Future
<
List
<
NoteModel
>>
noteList
(
{
int
page
=
1
,
int
limit
=
10
,
required
String
bookId
,
required
String
types
})
async
{
required
String
types
})
async
{
final
result
=
await
HttpService
.
to
.
post
(
'/v1/members/Information/myBookNotes'
,
params:
{
'page'
:
page
,
'page_size'
:
limit
,
'book_id'
:
bookId
,
'book_id'
:
bookId
,
'types'
:
types
},
);
if
(
result
.
data
is
!
Map
&&
result
.
data
[
'list'
]
is
!
List
)
return
[];
return
List
.
generate
(
result
.
data
[
'list'
].
length
,
(
index
){
return
List
.
generate
(
result
.
data
[
'list'
].
length
,
(
index
)
{
return
NoteModel
.
fromJson
(
result
.
data
[
'list'
][
index
]);
});
}
/// 13、笔记详情列表
///
static
Future
<
List
<
DiscussModel
>>
discussList
({
int
page
=
1
,
static
Future
<
List
<
DiscussModel
>>
discussList
(
{
int
page
=
1
,
int
limit
=
10
,
required
String
bookId
,
required
String
types
})
async
{
required
String
types
})
async
{
final
result
=
await
HttpService
.
to
.
post
(
'/v1/members/Information/myBookComment'
,
params:
{
'page'
:
page
,
'page_size'
:
limit
,
'book_id'
:
bookId
,
'book_id'
:
bookId
,
'types'
:
types
},
);
if
(
result
.
data
is
!
Map
&&
result
.
data
[
'list'
]
is
!
List
)
return
[];
return
List
.
generate
(
result
.
data
[
'list'
].
length
,
(
index
){
return
List
.
generate
(
result
.
data
[
'list'
].
length
,
(
index
)
{
return
DiscussModel
.
fromJson
(
result
.
data
[
'list'
][
index
]);
});
}
/// 14、修改密码
///
static
Future
<
bool
>
changePwd
({
required
String
password
,
required
String
rePassword
})
async
{
static
Future
<
bool
>
changePwd
(
{
required
String
password
,
required
String
rePassword
})
async
{
final
result
=
await
HttpService
.
to
.
post
(
'/v1/members/Information/changePasswd'
,
params:
{
'password'
:
password
,
'repassword'
:
rePassword
},
params:
{
'password'
:
password
,
'repassword'
:
rePassword
},
);
if
(
result
.
data
is
Map
&&
result
.
data
[
'is_success'
]
==
1
){
if
(
result
.
data
is
Map
&&
result
.
data
[
'is_success'
]
==
1
)
{
return
true
;
}
return
false
;
}
/// 15、修改手机号
static
Future
<
bool
>
changePhone
({
required
String
phone
,
required
String
code
})
async
{
static
Future
<
bool
>
changePhone
(
{
required
String
phone
,
required
String
code
})
async
{
final
result
=
await
HttpService
.
to
.
post
(
'/v1/members/Information/editPhone'
,
params:
{
'phone'
:
phone
,
'code'
:
code
},
params:
{
'phone'
:
phone
,
'code'
:
code
},
);
if
(
result
.
data
is
Map
&&
result
.
data
[
'is_success'
]
==
1
){
if
(
result
.
data
is
Map
&&
result
.
data
[
'is_success'
]
==
1
)
{
return
true
;
}
return
false
;
}
/// 16、帮助中心
static
Future
<
List
<
HelpCenterModel
>>
helpCenters
({
int
page
=
1
,
int
limit
=
10
,
})
async
{
final
result
=
await
HttpService
.
to
.
post
(
'/v1/common/Help/getList'
,
params:
{
'page'
:
page
,
'page_size'
:
limit
,
},
);
if
(
result
.
data
is
!
Map
&&
result
.
data
[
'list'
]
is
!
List
)
return
[];
return
List
.
generate
(
result
.
data
[
'list'
].
length
,
(
index
)
{
return
HelpCenterModel
.
fromJson
(
result
.
data
[
'list'
][
index
]);
});
}
/// 17、帮助中心内容
static
Future
<
HelpCenterContentModel
>
helpCenterContent
(
String
id
)
async
{
final
result
=
await
HttpService
.
to
.
post
(
'/v1/common/Help/getInfoById'
,
params:
{
'id'
:
id
,
},
);
if
(
result
.
data
is
!
Map
)
return
HelpCenterContentModel
();
return
HelpCenterContentModel
.
fromJson
(
result
.
data
);
}
}
lib/models/mine.dart
浏览文件 @
15eff61b
part of
models
;
class
ReadModel
{
ReadModel
({
required
this
.
value
,
required
this
.
name
,
this
.
link
,
this
.
icon
});
ReadModel
({
required
this
.
value
,
required
this
.
name
,
this
.
link
,
this
.
icon
});
String
value
;
String
name
;
...
...
@@ -15,7 +9,6 @@ class ReadModel {
String
?
icon
;
}
/// 紫金币 积分 模型
///
class
RecordModel
{
...
...
@@ -25,7 +18,8 @@ class RecordModel {
this
.
numbers
,
this
.
result
,
this
.
remarks
,
this
.
createTime
,});
this
.
createTime
,
});
RecordModel
.
fromJson
(
dynamic
json
)
{
integralId
=
json
[
'integral_id'
];
...
...
@@ -35,25 +29,31 @@ class RecordModel {
remarks
=
json
[
'remarks'
];
createTime
=
json
[
'create_time'
];
}
num
?
integralId
;
num
?
options
;
num
?
numbers
;
num
?
result
;
String
?
remarks
;
String
?
createTime
;
RecordModel
copyWith
({
num
?
integralId
,
RecordModel
copyWith
({
num
?
integralId
,
num
?
options
,
num
?
numbers
,
num
?
result
,
String
?
remarks
,
String
?
createTime
,
})
=>
RecordModel
(
integralId:
integralId
??
this
.
integralId
,
})
=>
RecordModel
(
integralId:
integralId
??
this
.
integralId
,
options:
options
??
this
.
options
,
numbers:
numbers
??
this
.
numbers
,
result:
result
??
this
.
result
,
remarks:
remarks
??
this
.
remarks
,
createTime:
createTime
??
this
.
createTime
,
);
Map
<
String
,
dynamic
>
toJson
()
{
final
map
=
<
String
,
dynamic
>{};
map
[
'integral_id'
]
=
integralId
;
...
...
@@ -64,7 +64,6 @@ class RecordModel {
map
[
'create_time'
]
=
createTime
;
return
map
;
}
}
/// 优惠券模型
...
...
@@ -77,7 +76,8 @@ class CouponModel {
this
.
useStatus
,
this
.
couponName
,
this
.
normPrice
,
this
.
reducedPrice
,});
this
.
reducedPrice
,
});
CouponModel
.
fromJson
(
dynamic
json
)
{
couponRecId
=
json
[
'coupon_rec_id'
];
...
...
@@ -88,6 +88,7 @@ class CouponModel {
normPrice
=
json
[
'norm_price'
];
reducedPrice
=
json
[
'reduced_price'
];
}
num
?
couponRecId
;
String
?
endTime
;
num
?
couponId
;
...
...
@@ -95,14 +96,18 @@ class CouponModel {
String
?
couponName
;
num
?
normPrice
;
String
?
reducedPrice
;
CouponModel
copyWith
({
num
?
couponRecId
,
CouponModel
copyWith
({
num
?
couponRecId
,
String
?
endTime
,
num
?
couponId
,
num
?
useStatus
,
String
?
couponName
,
num
?
normPrice
,
String
?
reducedPrice
,
})
=>
CouponModel
(
couponRecId:
couponRecId
??
this
.
couponRecId
,
})
=>
CouponModel
(
couponRecId:
couponRecId
??
this
.
couponRecId
,
endTime:
endTime
??
this
.
endTime
,
couponId:
couponId
??
this
.
couponId
,
useStatus:
useStatus
??
this
.
useStatus
,
...
...
@@ -110,6 +115,7 @@ class CouponModel {
normPrice:
normPrice
??
this
.
normPrice
,
reducedPrice:
reducedPrice
??
this
.
reducedPrice
,
);
Map
<
String
,
dynamic
>
toJson
()
{
final
map
=
<
String
,
dynamic
>{};
map
[
'coupon_rec_id'
]
=
couponRecId
;
...
...
@@ -121,7 +127,6 @@ class CouponModel {
map
[
'reduced_price'
]
=
reducedPrice
;
return
map
;
}
}
/// 更新模型
...
...
@@ -129,23 +134,30 @@ class UModel {
UModel
({
this
.
version
,
this
.
url
,
this
.
remarks
,});
this
.
remarks
,
});
UModel
.
fromJson
(
dynamic
json
)
{
version
=
json
[
'version'
];
url
=
json
[
'url'
];
remarks
=
json
[
'remarks'
];
}
String
?
version
;
String
?
url
;
String
?
remarks
;
UModel
copyWith
({
String
?
version
,
UModel
copyWith
({
String
?
version
,
String
?
url
,
String
?
remarks
,
})
=>
UModel
(
version:
version
??
this
.
version
,
})
=>
UModel
(
version:
version
??
this
.
version
,
url:
url
??
this
.
url
,
remarks:
remarks
??
this
.
remarks
,
);
Map
<
String
,
dynamic
>
toJson
()
{
final
map
=
<
String
,
dynamic
>{};
map
[
'version'
]
=
version
;
...
...
@@ -163,7 +175,8 @@ class VersionModel {
this
.
remarks
,
this
.
url
,
this
.
createTime
,
this
.
updateTime
,});
this
.
updateTime
,
});
VersionModel
.
fromJson
(
dynamic
json
)
{
id
=
json
[
'id'
];
...
...
@@ -173,25 +186,31 @@ class VersionModel {
createTime
=
json
[
'create_time'
];
updateTime
=
json
[
'update_time'
];
}
num
?
id
;
String
?
version
;
String
?
remarks
;
String
?
url
;
String
?
createTime
;
String
?
updateTime
;
VersionModel
copyWith
({
num
?
id
,
VersionModel
copyWith
({
num
?
id
,
String
?
version
,
String
?
remarks
,
String
?
url
,
String
?
createTime
,
String
?
updateTime
,
})
=>
VersionModel
(
id:
id
??
this
.
id
,
})
=>
VersionModel
(
id:
id
??
this
.
id
,
version:
version
??
this
.
version
,
remarks:
remarks
??
this
.
remarks
,
url:
url
??
this
.
url
,
createTime:
createTime
??
this
.
createTime
,
updateTime:
updateTime
??
this
.
updateTime
,
);
Map
<
String
,
dynamic
>
toJson
()
{
final
map
=
<
String
,
dynamic
>{};
map
[
'id'
]
=
id
;
...
...
@@ -202,7 +221,6 @@ class VersionModel {
map
[
'update_time'
]
=
updateTime
;
return
map
;
}
}
/// 用户信息模型
...
...
@@ -222,7 +240,8 @@ class UserInfoModel {
this
.
password
,
this
.
gradeId
,
this
.
gradeName
,
this
.
beanNums
,});
this
.
beanNums
,
});
UserInfoModel
.
fromJson
(
dynamic
json
)
{
name
=
json
[
'name'
];
...
...
@@ -241,6 +260,7 @@ class UserInfoModel {
gradeName
=
json
[
'grade_name'
];
beanNums
=
json
[
'bean_nums'
];
}
String
?
name
;
String
?
headImg
;
num
?
sex
;
...
...
@@ -256,7 +276,9 @@ class UserInfoModel {
num
?
gradeId
;
String
?
gradeName
;
String
?
beanNums
;
UserInfoModel
copyWith
({
String
?
name
,
UserInfoModel
copyWith
({
String
?
name
,
String
?
headImg
,
num
?
sex
,
String
?
phone
,
...
...
@@ -271,7 +293,9 @@ class UserInfoModel {
num
?
gradeId
,
String
?
gradeName
,
String
?
beanNums
,
})
=>
UserInfoModel
(
name:
name
??
this
.
name
,
})
=>
UserInfoModel
(
name:
name
??
this
.
name
,
headImg:
headImg
??
this
.
headImg
,
sex:
sex
??
this
.
sex
,
phone:
phone
??
this
.
phone
,
...
...
@@ -287,6 +311,7 @@ class UserInfoModel {
gradeName:
gradeName
??
this
.
gradeName
,
beanNums:
beanNums
??
this
.
beanNums
,
);
Map
<
String
,
dynamic
>
toJson
()
{
final
map
=
<
String
,
dynamic
>{};
map
[
'name'
]
=
name
;
...
...
@@ -306,7 +331,6 @@ class UserInfoModel {
map
[
'bean_nums'
]
=
beanNums
;
return
map
;
}
}
/// 笔记详情模型
...
...
@@ -318,7 +342,8 @@ class NoteModel {
this
.
positioning
,
this
.
noteContent
,
this
.
color
,
this
.
chapterName
,});
this
.
chapterName
,
});
NoteModel
.
fromJson
(
dynamic
json
)
{
types
=
json
[
'types'
];
...
...
@@ -329,6 +354,7 @@ class NoteModel {
color
=
json
[
'color'
];
chapterName
=
json
[
'chapter_name'
];
}
num
?
types
;
num
?
chapterId
;
String
?
content
;
...
...
@@ -336,14 +362,18 @@ class NoteModel {
String
?
noteContent
;
String
?
color
;
String
?
chapterName
;
NoteModel
copyWith
({
num
?
types
,
NoteModel
copyWith
({
num
?
types
,
num
?
chapterId
,
String
?
content
,
String
?
positioning
,
String
?
noteContent
,
String
?
color
,
String
?
chapterName
,
})
=>
NoteModel
(
types:
types
??
this
.
types
,
})
=>
NoteModel
(
types:
types
??
this
.
types
,
chapterId:
chapterId
??
this
.
chapterId
,
content:
content
??
this
.
content
,
positioning:
positioning
??
this
.
positioning
,
...
...
@@ -351,6 +381,7 @@ class NoteModel {
color:
color
??
this
.
color
,
chapterName:
chapterName
??
this
.
chapterName
,
);
Map
<
String
,
dynamic
>
toJson
()
{
final
map
=
<
String
,
dynamic
>{};
map
[
'types'
]
=
types
;
...
...
@@ -362,7 +393,6 @@ class NoteModel {
map
[
'chapter_name'
]
=
chapterName
;
return
map
;
}
}
/// 讨论模型
...
...
@@ -384,7 +414,8 @@ class DiscussModel {
this
.
replacePersonPic
,
this
.
personName
,
this
.
commentAll
,
this
.
personPic
,});
this
.
personPic
,
});
DiscussModel
.
fromJson
(
dynamic
json
)
{
id
=
json
[
'id'
];
...
...
@@ -410,6 +441,7 @@ class DiscussModel {
});
}
}
num
?
id
;
num
?
chapterId
;
String
?
chapterName
;
...
...
@@ -427,7 +459,9 @@ class DiscussModel {
String
?
personName
;
String
?
personPic
;
List
<
DiscussModel
>?
commentAll
;
DiscussModel
copyWith
({
num
?
id
,
DiscussModel
copyWith
({
num
?
id
,
num
?
chapterId
,
String
?
chapterName
,
String
?
content
,
...
...
@@ -444,7 +478,9 @@ class DiscussModel {
String
?
personName
,
String
?
personPic
,
List
<
DiscussModel
>?
commentAll
,
})
=>
DiscussModel
(
id:
id
??
this
.
id
,
})
=>
DiscussModel
(
id:
id
??
this
.
id
,
chapterId:
chapterId
??
this
.
chapterId
,
chapterName:
chapterName
??
this
.
chapterName
,
content:
content
??
this
.
content
,
...
...
@@ -462,6 +498,7 @@ class DiscussModel {
personPic:
personPic
??
this
.
personPic
,
commentAll:
commentAll
??
this
.
commentAll
,
);
Map
<
String
,
dynamic
>
toJson
()
{
final
map
=
<
String
,
dynamic
>{};
map
[
'id'
]
=
id
;
...
...
@@ -485,5 +522,93 @@ class DiscussModel {
}
return
map
;
}
}
/// 帮助中心模型
class
HelpCenterModel
{
HelpCenterModel
({
this
.
id
,
this
.
helpTitle
,
this
.
createTime
,
});
HelpCenterModel
.
fromJson
(
dynamic
json
)
{
id
=
json
[
'id'
];
helpTitle
=
json
[
'help_title'
];
createTime
=
json
[
'create_time'
];
}
num
?
id
;
String
?
helpTitle
;
String
?
createTime
;
HelpCenterModel
copyWith
({
num
?
id
,
String
?
helpTitle
,
String
?
createTime
,
})
=>
HelpCenterModel
(
id:
id
??
this
.
id
,
helpTitle:
helpTitle
??
this
.
helpTitle
,
createTime:
createTime
??
this
.
createTime
,
);
Map
<
String
,
dynamic
>
toJson
()
{
final
map
=
<
String
,
dynamic
>{};
map
[
'id'
]
=
id
;
map
[
'help_title'
]
=
helpTitle
;
map
[
'create_time'
]
=
createTime
;
return
map
;
}
}
/// 帮助中心内容模型
class
HelpCenterContentModel
{
HelpCenterContentModel
({
this
.
id
,
this
.
helpTitle
,
this
.
helpContent
,
this
.
createTime
,
this
.
updateTime
,
});
HelpCenterContentModel
.
fromJson
(
dynamic
json
)
{
id
=
json
[
'id'
];
helpTitle
=
json
[
'help_title'
];
helpContent
=
json
[
'help_content'
];
createTime
=
json
[
'create_time'
];
updateTime
=
json
[
'update_time'
];
}
num
?
id
;
String
?
helpTitle
;
String
?
helpContent
;
String
?
createTime
;
String
?
updateTime
;
HelpCenterContentModel
copyWith
({
num
?
id
,
String
?
helpTitle
,
String
?
helpContent
,
String
?
createTime
,
String
?
updateTime
,
})
=>
HelpCenterContentModel
(
id:
id
??
this
.
id
,
helpTitle:
helpTitle
??
this
.
helpTitle
,
helpContent:
helpContent
??
this
.
helpContent
,
createTime:
createTime
??
this
.
createTime
,
updateTime:
updateTime
??
this
.
updateTime
,
);
Map
<
String
,
dynamic
>
toJson
()
{
final
map
=
<
String
,
dynamic
>{};
map
[
'id'
]
=
id
;
map
[
'help_title'
]
=
helpTitle
;
map
[
'help_content'
]
=
helpContent
;
map
[
'create_time'
]
=
createTime
;
map
[
'update_time'
]
=
updateTime
;
return
map
;
}
}
lib/pages/help_center/controller.dart
0 → 100644
浏览文件 @
15eff61b
part of
help_center
;
class
HelpCenterController
extends
GetxController
{
final
EasyRefreshController
refreshController
=
EasyRefreshController
(
controlFinishLoad:
true
,
controlFinishRefresh:
true
,
);
final
int
_limit
=
10
;
int
_page
=
1
;
bool
_noMore
=
false
;
List
<
HelpCenterModel
>
helpCenters
=
[];
@override
void
onClose
()
{
refreshController
.
dispose
();
super
.
onClose
();
}
/// 获取课程内图书列表
Future
<
void
>
_gethelpCenters
([
bool
isRefresh
=
false
])
async
{
if
(
isRefresh
)
_page
=
1
;
// 网路请求
final
result
=
await
MineAPI
.
helpCenters
(
page:
_page
,
limit:
_limit
);
// 如果是刷新 清理数据
if
(
isRefresh
)
helpCenters
.
clear
();
helpCenters
.
addAll
(
result
);
_page
++;
_noMore
=
result
.
length
<
_limit
;
update
();
}
void
onRefresh
()
async
{
try
{
await
_gethelpCenters
(
true
);
refreshController
.
finishRefresh
(
IndicatorResult
.
success
);
refreshController
.
resetFooter
();
}
catch
(
error
)
{
refreshController
.
finishRefresh
(
IndicatorResult
.
fail
);
}
}
void
onLoading
()
async
{
if
(
_noMore
)
{
refreshController
.
finishLoad
(
IndicatorResult
.
noMore
);
return
;
}
try
{
await
_gethelpCenters
();
refreshController
.
finishLoad
();
}
catch
(
error
)
{
refreshController
.
finishLoad
(
IndicatorResult
.
fail
);
}
}
List
<
HelpCenterModel
>
test
(){
return
[
HelpCenterModel
(
id:
1
,
helpTitle:
'账号注册'
),
HelpCenterModel
(
id:
2
,
helpTitle:
'如何进行充值'
),
HelpCenterModel
(
id:
3
,
helpTitle:
'如何对内容进行划线'
),
];
}
}
\ No newline at end of file
lib/pages/help_center/index.dart
0 → 100644
浏览文件 @
15eff61b
library
help_center
;
import
'package:easy_refresh/easy_refresh.dart'
;
import
'package:flutter/material.dart'
;
import
'package:flutter_book/apis/index.dart'
;
import
'package:flutter_book/widgets/index.dart'
;
import
'package:flutter_screenutil/flutter_screenutil.dart'
;
import
'package:get/get.dart'
;
import
'package:go_router/go_router.dart'
;
import
'../../models/index.dart'
;
import
'../../routes/index.dart'
;
import
'../../utils/index.dart'
;
part
'view.dart'
;
part
'controller.dart'
;
part
'widgets/item.dart'
;
\ No newline at end of file
lib/pages/help_center/view.dart
0 → 100644
浏览文件 @
15eff61b
part of
help_center
;
class
HelpCenterPage
extends
StatefulWidget
{
const
HelpCenterPage
({
Key
?
key
})
:
super
(
key:
key
);
@override
State
<
HelpCenterPage
>
createState
()
=>
_HelpCenterPageState
();
}
class
_HelpCenterPageState
extends
State
<
HelpCenterPage
>
{
@override
Widget
build
(
BuildContext
context
)
{
return
GetBuilder
<
HelpCenterController
>(
init:
HelpCenterController
(),
builder:
(
controller
)
=>
Scaffold
(
appBar:
AppBar
(
centerTitle:
true
,
title:
const
Text
(
'帮助中心'
),
),
body:
CustomPullScrollView
(
controller:
controller
.
refreshController
,
onRefresh:
controller
.
onRefresh
,
onLoading:
controller
.
onLoading
,
child:
SingleChildScrollView
(
child:
Container
(
margin:
EdgeInsets
.
all
(
10
.
w
),
decoration:
BoxDecoration
(
borderRadius:
BorderRadius
.
circular
(
8
.
w
),
color:
Colors
.
white
,
boxShadow:
[
BoxShadow
(
color:
const
Color
(
0xFFC7C7C7
).
withOpacity
(
0.5
),
offset:
Offset
(
3
.
w
,
0
),
blurRadius:
10
.
w
,
spreadRadius:
0
.
w
,
),
],
),
child:
ClipRRect
(
borderRadius:
BorderRadius
.
circular
(
8
.
w
),
child:
ListView
.
builder
(
shrinkWrap:
true
,
physics:
const
NeverScrollableScrollPhysics
(),
itemCount:
controller
.
helpCenters
.
length
,
itemBuilder:
(
BuildContext
context
,
int
index
){
HelpCenterModel
model
=
controller
.
helpCenters
[
index
];
return
GestureDetector
(
child:
BuildItem
(
model:
model
,),
onTap:
(){
context
.
pushNamed
(
Routes
.
helpCenterContent
,
queryParameters:
{
'id'
:
model
.
id
.
toString
()});
},
);
}),
),
),
),
),
));
}
}
lib/pages/help_center/widgets/item.dart
0 → 100644
浏览文件 @
15eff61b
part of
help_center
;
class
BuildItem
extends
StatelessWidget
{
final
HelpCenterModel
model
;
const
BuildItem
({
Key
?
key
,
required
this
.
model
})
:
super
(
key:
key
);
@override
Widget
build
(
BuildContext
context
)
{
return
Container
(
color:
Colors
.
white
,
padding:
EdgeInsets
.
only
(
top:
10
.
w
,
right:
15
.
w
,
left:
15
.
w
),
child:
Column
(
children:
[
Row
(
mainAxisAlignment:
MainAxisAlignment
.
spaceBetween
,
children:
[
Row
(
children:
<
Widget
>[
Text
(
'
${model!.id}
.'
,
style:
TextStyle
(
fontSize:
14
.
w
,
height:
1.5
.
w
,
color:
Colours
.
c3
),
),
Padding
(
padding:
const
EdgeInsets
.
only
(
left:
10
),
// 设置左部间隔
child:
Text
(
model
.
helpTitle
??
''
,
style:
TextStyle
(
fontSize:
12
.
w
,
height:
1.5
.
w
,
color:
Colours
.
c9
),
),
),
],
),
Image
.
asset
(
'assets/images/right_arrow.png'
)
],
),
Gaps
.
vGaps10
,
Container
(
height:
0.5
.
w
,
color:
Colours
.
cF0
,
)
],
),
);
}
}
lib/pages/help_cneter_content/controller.dart
0 → 100644
浏览文件 @
15eff61b
part of
help_cneter_content
;
class
HelpCenterContentController
extends
GetxController
{
final
String
id
;
HelpCenterContentModel
helpCenterContentModel
=
HelpCenterContentModel
();
HelpCenterContentController
(
this
.
id
);
@override
void
onReady
()
{
_getHelpCenterContent
(
id
);
super
.
onReady
();
}
/// 获取帮助中心内容
void
_getHelpCenterContent
(
String
id
)
async
{
helpCenterContentModel
=
await
MineAPI
.
helpCenterContent
(
id
);
update
();
}
}
lib/pages/help_cneter_content/index.dart
0 → 100644
浏览文件 @
15eff61b
library
help_cneter_content
;
import
'package:flutter/material.dart'
;
import
'package:flutter_screenutil/flutter_screenutil.dart'
;
import
'package:get/get_state_manager/src/simple/get_controllers.dart'
;
import
'package:get/get_state_manager/src/simple/get_state.dart'
;
import
'../../apis/index.dart'
;
import
'../../models/index.dart'
;
import
'../../utils/index.dart'
;
part
'view.dart'
;
part
'controller.dart'
;
\ No newline at end of file
lib/pages/help_cneter_content/view.dart
0 → 100644
浏览文件 @
15eff61b
part of
help_cneter_content
;
/// 帮助中心-常见问题-内容详情
class
HelpCenterContentPage
extends
StatefulWidget
{
final
String
id
;
const
HelpCenterContentPage
({
Key
?
key
,
required
this
.
id
,
})
:
super
(
key:
key
);
@override
State
<
HelpCenterContentPage
>
createState
()
=>
_HelpCenterContentPageState
();
}
class
_HelpCenterContentPageState
extends
State
<
HelpCenterContentPage
>
{
@override
Widget
build
(
BuildContext
context
)
{
return
GetBuilder
<
HelpCenterContentController
>(
init:
HelpCenterContentController
(
widget
.
id
),
builder:
(
controller
)
=>
Scaffold
(
appBar:
AppBar
(
centerTitle:
true
,
title:
const
Text
(
'常见问题'
),
),
body:
Container
(
width:
double
.
infinity
,
margin:
EdgeInsets
.
only
(
left:
15
.
w
,
top:
10
.
w
,
right:
15
.
w
,
bottom:
15
.
w
),
child:
Column
(
crossAxisAlignment:
CrossAxisAlignment
.
start
,
// 下面的Text靠左
children:
[
Align
(
alignment:
Alignment
.
topCenter
,
child:
Text
(
controller
.
helpCenterContentModel
.
helpTitle
??
''
,
style:
TextStyle
(
fontSize:
16
.
w
,
height:
1.5
.
w
,
color:
Colours
.
c3
),
),
),
SizedBox
(
height:
15
.
w
),
// 添加15dp的间隔,
Text
(
controller
.
helpCenterContentModel
.
helpContent
??
''
,
style:
TextStyle
(
fontSize:
14
.
w
,
height:
1.5
.
w
,
color:
Colours
.
c3
),
),
],
),
),
));
}
}
/*@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
centerTitle: true,
title: const Text('常见问题'),
),
body: Container(
margin: EdgeInsets.all(15.w),
child: Column(
children: [
Text(
model.helpTitle ?? '',
style: TextStyle(fontSize: 16.w, height: 1.5, color: Colours.c3),
),
Text(
model.helpContent ?? '',
style: TextStyle(fontSize: 14.w, height: 1.5, color: Colours.c3),
),
],
),
),
);
}*/
lib/pages/mine/view.dart
浏览文件 @
15eff61b
...
...
@@ -125,6 +125,12 @@ class _MinePageState extends State<MinePage> {
},
child:
_buildItem
(
'意见反馈'
)
),
Container
(
color:
Colours
.
cLine
,
margin:
EdgeInsets
.
symmetric
(
horizontal:
15
.
w
),
height:
1
.
w
,),
GestureDetector
(
onTap:
(){
context
.
pushNamed
(
Routes
.
helpCenter
);
},
child:
_buildItem
(
'帮助中心'
,)
),
Container
(
color:
Colours
.
cLine
,
margin:
EdgeInsets
.
symmetric
(
horizontal:
15
.
w
),
height:
1
.
w
,),
GestureDetector
(
onTap:
(){
context
.
pushNamed
(
Routes
.
about
);
...
...
lib/pages/search/controller.dart
浏览文件 @
15eff61b
part of
search
;
class
SearchController
extends
GetxController
{
final
EasyRefreshController
refreshController
=
EasyRefreshController
(
controlFinishLoad:
true
,
controlFinishRefresh:
true
,
);
late
TextEditingController
searchController
=
TextEditingController
();
// 搜索记录数组
...
...
@@ -9,6 +12,10 @@ class SearchController extends GetxController {
// 书籍数组
List
<
CourseModel
>
books
=
[];
final
int
_limit
=
20
;
int
_page
=
1
;
bool
_noMore
=
false
;
@override
void
onReady
()
{
_getSearchRecords
();
...
...
@@ -43,6 +50,52 @@ class SearchController extends GetxController {
}
/// 收藏 与 取消收藏
void
love
({
required
String
bookId
,
required
num
isCollection
})
async
{
if
(
isCollection
==
0
){
isCollection
=
1
;
}
else
{
isCollection
=
0
;
}
bool
result
=
await
CommonAPI
.
love
(
bookId:
bookId
,
love:
isCollection
.
toString
());
if
(
result
)
{
onRefresh
();
}
}
/// 获取图书列表数据
Future
<
void
>
_getBooks
([
bool
isRefresh
=
false
])
async
{
if
(
isRefresh
)
_page
=
1
;
// 网路请求
final
result
=
await
LibraryAPI
.
books
(
page:
_page
,
limit:
_limit
);
// 如果是刷新 清理数据
if
(
isRefresh
)
books
.
clear
();
books
.
addAll
(
result
);
_page
++;
_noMore
=
result
.
length
<
_limit
;
update
();
}
void
onRefresh
()
async
{
try
{
await
_getBooks
(
true
);
refreshController
.
finishRefresh
(
IndicatorResult
.
success
);
refreshController
.
resetFooter
();
}
catch
(
error
)
{
refreshController
.
finishRefresh
(
IndicatorResult
.
fail
);
}
}
/// 本地搜索历史
/*
///获取搜索关键字数据
...
...
lib/pages/search/index.dart
浏览文件 @
15eff61b
library
search
;
import
'package:easy_refresh/easy_refresh.dart'
;
import
'package:flutter/material.dart'
;
import
'package:flutter_book/widgets/index.dart'
;
import
'package:flutter_screenutil/flutter_screenutil.dart'
;
...
...
@@ -10,9 +11,11 @@ import 'package:go_router/go_router.dart';
import
'../../apis/index.dart'
;
import
'../../models/index.dart'
;
import
'../../routes/index.dart'
;
import
'../../services/index.dart'
;
import
'../../theme.dart'
;
import
'../../utils/index.dart'
;
import
'../library/index.dart'
;
part
'view.dart'
;
part
'widgets/history.dart'
;
...
...
lib/pages/search/view.dart
浏览文件 @
15eff61b
...
...
@@ -8,43 +8,87 @@ class SearchPage extends StatefulWidget {
}
class
_SearchPageState
extends
State
<
SearchPage
>
{
bool
showHistory
=
true
;
// 根据条件设置为true或false
@override
Widget
build
(
BuildContext
context
)
{
return
GetBuilder
<
SearchController
>(
init:
SearchController
(),
builder:
(
controller
)
=>
Scaffold
(
builder:
(
controller
)
=>
Scaffold
(
appBar:
CustomAppBar
(
automaticallyImplyLeading:
false
,
automaticallyImplyLeading:
false
,
titleSpacing:
0
,
title:
Padding
(
padding:
EdgeInsets
.
symmetric
(
horizontal:
AppTheme
.
margin
),
child:
CustomInputSearch
(
controller:
controller
.
searchController
,
readOnly:
false
,
readOnly:
false
,
hintText:
'请输入书籍名称'
,
onTap:
()
{
// context.pushNamed(Routes.msgs);
},
onEditingComplete:
(){
onEditingComplete:
()
{
showHistory
=
false
;
controller
.
search
();
// FocusScope.of(context).unfocus();
FocusNode
blankNode
=
FocusNode
();
FocusScope
.
of
(
context
).
requestFocus
(
blankNode
);
//指定为空白焦点
},
),
),
actions:
[
GestureDetector
(
onTap:
(){
onTap:
()
{
context
.
pop
();
},
child:
Container
(
padding:
EdgeInsets
.
only
(
left:
10
.
w
,
top:
10
.
w
,
bottom:
10
.
w
),
child:
Text
(
'取消'
,
style:
TextStyle
(
fontSize:
14
.
w
,
height:
1.5
,
color:
Colours
.
c3
),),
// color: Colors.red,
padding:
EdgeInsets
.
only
(
left:
10
.
w
,
top:
10
.
w
,
bottom:
10
.
w
),
child:
Text
(
'取消'
,
style:
TextStyle
(
fontSize:
14
.
w
,
height:
1.5
,
color:
Colours
.
c3
),
),
),
)
],
),
body:
BuildHistory
(
controller:
controller
),
body:
buildListView
(
controller
),
),
);
}
Widget
buildListView
(
SearchController
controller
)
{
if
(
showHistory
)
{
// 如果条件为true,显示历史搜索记录
return
BuildHistory
(
controller:
controller
);
}
else
{
// 如果条件为false,显示搜索到的书籍
return
ListView
.
builder
(
// shrinkWrap: true,
// physics: NeverScrollableScrollPhysics(),
scrollDirection:
Axis
.
vertical
,
itemCount:
controller
.
books
.
length
,
itemBuilder:
(
BuildContext
context
,
int
index
)
{
CourseModel
model
=
controller
.
books
[
index
];
return
GestureDetector
(
onTap:
()
{
context
.
pushNamed
(
Routes
.
bookDetail
,
queryParameters:
{
'book_id'
:
model
.
bookId
.
toString
()});
},
child:
LibraryCell
(
model:
model
,
onTap:
()
{
controller
.
love
(
bookId:
model
.
bookId
.
toString
(),
isCollection:
model
.
isCollection
!);
},
),
);
});
}
}
hideSoftKeyboard
(
BuildContext
context
)
{
FocusNode
blankNode
=
FocusNode
();
//空白焦点,不赋值给任何输入框的focusNode
FocusScope
.
of
(
context
).
requestFocus
(
blankNode
);
//指定为空白焦点
}
}
lib/routes/index.dart
浏览文件 @
15eff61b
...
...
@@ -11,6 +11,8 @@ import 'package:flutter_book/pages/change_phone/index.dart';
import
'package:flutter_book/pages/change_pwd/index.dart'
;
import
'package:flutter_book/pages/credit_points/index.dart'
;
import
'package:flutter_book/pages/forget_pwd/index.dart'
;
import
'package:flutter_book/pages/help_center/index.dart'
;
import
'package:flutter_book/pages/help_cneter_content/index.dart'
;
import
'package:flutter_book/pages/login/index.dart'
;
import
'package:flutter_book/pages/main/index.dart'
;
import
'package:flutter_book/pages/reset_pwd/index.dart'
;
...
...
lib/routes/routes.dart
浏览文件 @
15eff61b
...
...
@@ -94,6 +94,10 @@ abstract class Routes {
static
const
feedback
=
'feedback'
;
// 订单评价
static
const
orderEvaluate
=
'order_evaluate'
;
// 帮助中心
static
const
helpCenter
=
'help_center'
;
// 帮助中心内容
static
const
helpCenterContent
=
'help_center_content'
;
...
...
@@ -454,6 +458,24 @@ abstract class Routes {
child:
const
OrderEvaluatePage
()
)
),
GoRoute
(
// 帮助中心
path:
'/
$helpCenter
'
,
name:
helpCenter
,
pageBuilder:
(
context
,
state
)
=>
CupertinoPage
(
name:
state
.
uri
.
toString
(),
key:
state
.
pageKey
,
child:
const
HelpCenterPage
()
)
),
GoRoute
(
// 帮助中心内容
path:
'/
$helpCenterContent
'
,
name:
helpCenterContent
,
pageBuilder:
(
context
,
state
)
=>
CupertinoPage
(
name:
state
.
uri
.
toString
(),
key:
state
.
pageKey
,
child:
HelpCenterContentPage
(
id:
state
.
uri
.
queryParameters
[
'id'
].
toString
())
)
),
]
);
...
...
pubspec.lock
浏览文件 @
15eff61b
...
...
@@ -6,7 +6,7 @@ packages:
description:
name: async
sha256: "947bfcf187f74dbc5e146c9eb9c0f10c9f8b30743e341481c1e2ed3ecc18c20c"
url: "https://pub.
flutter-io.cn
"
url: "https://pub.
dev
"
source: hosted
version: "2.11.0"
audio_session:
...
...
@@ -14,7 +14,7 @@ packages:
description:
name: audio_session
sha256: "6fdf255ed3af86535c96452c33ecff1245990bb25a605bfb1958661ccc3d467f"
url: "https://pub.
flutter-io.cn
"
url: "https://pub.
dev
"
source: hosted
version: "0.1.18"
badges:
...
...
@@ -22,7 +22,7 @@ packages:
description:
name: badges
sha256: a7b6bbd60dce418df0db3058b53f9d083c22cdb5132a052145dc267494df0b84
url: "https://pub.
flutter-io.cn
"
url: "https://pub.
dev
"
source: hosted
version: "3.1.2"
boolean_selector:
...
...
@@ -30,7 +30,7 @@ packages:
description:
name: boolean_selector
sha256: "6cfb5af12253eaf2b368f07bacc5a80d1301a071c73360d746b7f2e32d762c66"
url: "https://pub.
flutter-io.cn
"
url: "https://pub.
dev
"
source: hosted
version: "2.1.1"
carousel_slider:
...
...
@@ -38,7 +38,7 @@ packages:
description:
name: carousel_slider
sha256: "9c695cc963bf1d04a47bd6021f68befce8970bcd61d24938e1fb0918cf5d9c42"
url: "https://pub.
flutter-io.cn
"
url: "https://pub.
dev
"
source: hosted
version: "4.2.1"
characters:
...
...
@@ -46,7 +46,7 @@ packages:
description:
name: characters
sha256: "04a925763edad70e8443c99234dc3328f442e811f1d8fd1a72f1c8ad0f69a605"
url: "https://pub.
flutter-io.cn
"
url: "https://pub.
dev
"
source: hosted
version: "1.3.0"
clock:
...
...
@@ -54,7 +54,7 @@ packages:
description:
name: clock
sha256: cb6d7f03e1de671e34607e909a7213e31d7752be4fb66a86d29fe1eb14bfb5cf
url: "https://pub.
flutter-io.cn
"
url: "https://pub.
dev
"
source: hosted
version: "1.1.1"
collection:
...
...
@@ -62,7 +62,7 @@ packages:
description:
name: collection
sha256: "4a07be6cb69c84d677a6c3096fcf960cc3285a8330b4603e0d463d15d9bd934c"
url: "https://pub.
flutter-io.cn
"
url: "https://pub.
dev
"
source: hosted
version: "1.17.1"
convert:
...
...
@@ -70,7 +70,7 @@ packages:
description:
name: convert
sha256: f08428ad63615f96a27e34221c65e1a451439b5f26030f78d790f461c686d65d
url: "https://pub.
flutter-io.cn
"
url: "https://pub.
dev
"
source: hosted
version: "3.0.1"
cross_file:
...
...
@@ -78,7 +78,7 @@ packages:
description:
name: cross_file
sha256: "2f9d2cbccb76127ba28528cb3ae2c2326a122446a83de5a056aaa3880d3882c5"
url: "https://pub.
flutter-io.cn
"
url: "https://pub.
dev
"
source: hosted
version: "0.3.3+7"
crypto:
...
...
@@ -86,7 +86,7 @@ packages:
description:
name: crypto
sha256: ff625774173754681d66daaf4a448684fb04b78f902da9cb3d308c19cc5e8bab
url: "https://pub.
flutter-io.cn
"
url: "https://pub.
dev
"
source: hosted
version: "3.0.3"
cupertino_icons:
...
...
@@ -94,7 +94,7 @@ packages:
description:
name: cupertino_icons
sha256: d57953e10f9f8327ce64a508a355f0b1ec902193f66288e8cb5070e7c47eeb2d
url: "https://pub.
flutter-io.cn
"
url: "https://pub.
dev
"
source: hosted
version: "1.0.6"
decimal:
...
...
@@ -102,7 +102,7 @@ packages:
description:
name: decimal
sha256: "24a261d5d5c87e86c7651c417a5dbdf8bcd7080dd592533910e8d0505a279f21"
url: "https://pub.
flutter-io.cn
"
url: "https://pub.
dev
"
source: hosted
version: "2.3.3"
dio:
...
...
@@ -110,7 +110,7 @@ packages:
description:
name: dio
sha256: "417e2a6f9d83ab396ec38ff4ea5da6c254da71e4db765ad737a42af6930140b7"
url: "https://pub.
flutter-io.cn
"
url: "https://pub.
dev
"
source: hosted
version: "5.3.3"
easy_refresh:
...
...
@@ -118,7 +118,7 @@ packages:
description:
name: easy_refresh
sha256: "77b025ea49f27b5ebc5eef40a6678be52564c293bd97ce91a4088d6646478329"
url: "https://pub.
flutter-io.cn
"
url: "https://pub.
dev
"
source: hosted
version: "3.3.2+1"
extended_image:
...
...
@@ -126,7 +126,7 @@ packages:
description:
name: extended_image
sha256: e77d18f956649ba6e5ecebd0cb68542120886336a75ee673788145bd4c3f0767
url: "https://pub.
flutter-io.cn
"
url: "https://pub.
dev
"
source: hosted
version: "8.0.2"
extended_image_library:
...
...
@@ -134,7 +134,7 @@ packages:
description:
name: extended_image_library
sha256: bb8d08c504ebc73d476ec1c99451a61f12e95538869e734fc4f55a3a2d5c98ec
url: "https://pub.
flutter-io.cn
"
url: "https://pub.
dev
"
source: hosted
version: "3.5.3"
fake_async:
...
...
@@ -142,7 +142,7 @@ packages:
description:
name: fake_async
sha256: "511392330127add0b769b75a987850d136345d9227c6b94c96a04cf4a391bf78"
url: "https://pub.
flutter-io.cn
"
url: "https://pub.
dev
"
source: hosted
version: "1.3.1"
ffi:
...
...
@@ -150,7 +150,7 @@ packages:
description:
name: ffi
sha256: "7bf0adc28a23d395f19f3f1eb21dd7cfd1dd9f8e1c50051c069122e6853bc878"
url: "https://pub.
flutter-io.cn
"
url: "https://pub.
dev
"
source: hosted
version: "2.1.0"
file:
...
...
@@ -158,7 +158,7 @@ packages:
description:
name: file
sha256: "5fc22d7c25582e38ad9a8515372cd9a93834027aacf1801cf01164dac0ffa08c"
url: "https://pub.
flutter-io.cn
"
url: "https://pub.
dev
"
source: hosted
version: "7.0.0"
flutter:
...
...
@@ -171,7 +171,7 @@ packages:
description:
name: flutter_app_update
sha256: "2202e6e6d49eacc571304e5a6a5404f893382b492029d01d33b3bfb9af1c2f25"
url: "https://pub.
flutter-io.cn
"
url: "https://pub.
dev
"
source: hosted
version: "3.0.4"
flutter_easyloading:
...
...
@@ -179,7 +179,7 @@ packages:
description:
name: flutter_easyloading
sha256: ba21a3c883544e582f9cc455a4a0907556714e1e9cf0eababfcb600da191d17c
url: "https://pub.
flutter-io.cn
"
url: "https://pub.
dev
"
source: hosted
version: "3.0.5"
flutter_inappwebview:
...
...
@@ -187,7 +187,7 @@ packages:
description:
name: flutter_inappwebview
sha256: d198297060d116b94048301ee6749cd2e7d03c1f2689783f52d210a6b7aba350
url: "https://pub.
flutter-io.cn
"
url: "https://pub.
dev
"
source: hosted
version: "5.8.0"
flutter_lints:
...
...
@@ -195,7 +195,7 @@ packages:
description:
name: flutter_lints
sha256: a25a15ebbdfc33ab1cd26c63a6ee519df92338a9c10f122adda92938253bef04
url: "https://pub.
flutter-io.cn
"
url: "https://pub.
dev
"
source: hosted
version: "2.0.3"
flutter_localizations:
...
...
@@ -208,7 +208,7 @@ packages:
description:
name: flutter_plugin_android_lifecycle
sha256: b068ffc46f82a55844acfa4fdbb61fad72fa2aef0905548419d97f0f95c456da
url: "https://pub.
flutter-io.cn
"
url: "https://pub.
dev
"
source: hosted
version: "2.0.17"
flutter_screenutil:
...
...
@@ -216,7 +216,7 @@ packages:
description:
name: flutter_screenutil
sha256: b3e155ee4f2cf5b21a2e15182d1c49c848147ed47f62083fc9a9beccb85f59f9
url: "https://pub.
flutter-io.cn
"
url: "https://pub.
dev
"
source: hosted
version: "5.8.2"
flutter_slidable:
...
...
@@ -224,7 +224,7 @@ packages:
description:
name: flutter_slidable
sha256: "19ed4813003a6ff4e9c6bcce37e792a2a358919d7603b2b31ff200229191e44c"
url: "https://pub.
flutter-io.cn
"
url: "https://pub.
dev
"
source: hosted
version: "3.0.1"
flutter_sound:
...
...
@@ -232,7 +232,7 @@ packages:
description:
name: flutter_sound
sha256: "090a4694b11ecc744c2010621c4ffc5fe7c3079d304ea014961a72c7b72cfe6c"
url: "https://pub.
flutter-io.cn
"
url: "https://pub.
dev
"
source: hosted
version: "9.2.13"
flutter_sound_platform_interface:
...
...
@@ -240,7 +240,7 @@ packages:
description:
name: flutter_sound_platform_interface
sha256: "4537eaeb58a32748c42b621ad6116f7f4c6ee0a8d6ffaa501b165fe1c9df4753"
url: "https://pub.
flutter-io.cn
"
url: "https://pub.
dev
"
source: hosted
version: "9.2.13"
flutter_sound_web:
...
...
@@ -248,7 +248,7 @@ packages:
description:
name: flutter_sound_web
sha256: ad4ca92671a1879e1f613e900bbbdb8170b20d57d1e4e6363018fe56b055594f
url: "https://pub.
flutter-io.cn
"
url: "https://pub.
dev
"
source: hosted
version: "9.2.13"
flutter_spinkit:
...
...
@@ -256,7 +256,7 @@ packages:
description:
name: flutter_spinkit
sha256: b39c753e909d4796906c5696a14daf33639a76e017136c8d82bf3e620ce5bb8e
url: "https://pub.
flutter-io.cn
"
url: "https://pub.
dev
"
source: hosted
version: "5.2.0"
flutter_star:
...
...
@@ -264,7 +264,7 @@ packages:
description:
name: flutter_star
sha256: "7dc10b8b3667ace2aa575a37ea0c00558a7514019cfe7e76322573d85b72a472"
url: "https://pub.
flutter-io.cn
"
url: "https://pub.
dev
"
source: hosted
version: "1.2.0"
flutter_test:
...
...
@@ -277,7 +277,7 @@ packages:
description:
name: flutter_tts
sha256: cbb3fd43b946e62398560235469e6113e4fe26c40eab1b7cb5e7c417503fb3a8
url: "https://pub.
flutter-io.cn
"
url: "https://pub.
dev
"
source: hosted
version: "3.8.5"
flutter_web_plugins:
...
...
@@ -290,7 +290,7 @@ packages:
description:
name: fluwx
sha256: "7a1596e8fad1b2191cf62f4cc80f3c63c01306bd6d8fa4f5c815f5e309da1dba"
url: "https://pub.
flutter-io.cn
"
url: "https://pub.
dev
"
source: hosted
version: "4.4.9"
get:
...
...
@@ -298,7 +298,7 @@ packages:
description:
name: get
sha256: "2ba20a47c8f1f233bed775ba2dd0d3ac97b4cf32fc17731b3dfc672b06b0e92a"
url: "https://pub.
flutter-io.cn
"
url: "https://pub.
dev
"
source: hosted
version: "4.6.5"
go_router:
...
...
@@ -306,7 +306,7 @@ packages:
description:
name: go_router
sha256: "2aa884667eeda3a1c461f31e72af1f77984ab0f29450d8fb12ec1f7bc53eea14"
url: "https://pub.
flutter-io.cn
"
url: "https://pub.
dev
"
source: hosted
version: "10.1.0"
http:
...
...
@@ -314,7 +314,7 @@ packages:
description:
name: http
sha256: "759d1a329847dd0f39226c688d3e06a6b8679668e350e2891a6474f8b4bb8525"
url: "https://pub.
flutter-io.cn
"
url: "https://pub.
dev
"
source: hosted
version: "1.1.0"
http_client_helper:
...
...
@@ -322,7 +322,7 @@ packages:
description:
name: http_client_helper
sha256: "8a9127650734da86b5c73760de2b404494c968a3fd55602045ffec789dac3cb1"
url: "https://pub.
flutter-io.cn
"
url: "https://pub.
dev
"
source: hosted
version: "3.0.0"
http_parser:
...
...
@@ -330,7 +330,7 @@ packages:
description:
name: http_parser
sha256: "2aa08ce0341cc9b354a498388e30986515406668dbcc4f7c950c3e715496693b"
url: "https://pub.
flutter-io.cn
"
url: "https://pub.
dev
"
source: hosted
version: "4.0.2"
image_picker:
...
...
@@ -338,7 +338,7 @@ packages:
description:
name: image_picker
sha256: "9978d3510af4e6a902e545ce19229b926e6de6a1828d6134d3aab2e129a4d270"
url: "https://pub.
flutter-io.cn
"
url: "https://pub.
dev
"
source: hosted
version: "0.8.7+5"
image_picker_android:
...
...
@@ -346,7 +346,7 @@ packages:
description:
name: image_picker_android
sha256: "39f2bfe497e495450c81abcd44b62f56c2a36a37a175da7d137b4454977b51b1"
url: "https://pub.
flutter-io.cn
"
url: "https://pub.
dev
"
source: hosted
version: "0.8.9+3"
image_picker_for_web:
...
...
@@ -354,7 +354,7 @@ packages:
description:
name: image_picker_for_web
sha256: "869fe8a64771b7afbc99fc433a5f7be2fea4d1cb3d7c11a48b6b579eb9c797f0"
url: "https://pub.
flutter-io.cn
"
url: "https://pub.
dev
"
source: hosted
version: "2.2.0"
image_picker_ios:
...
...
@@ -362,7 +362,7 @@ packages:
description:
name: image_picker_ios
sha256: fadafce49e8569257a0cad56d24438a6fa1f0cbd7ee0af9b631f7492818a4ca3
url: "https://pub.
flutter-io.cn
"
url: "https://pub.
dev
"
source: hosted
version: "0.8.9+1"
image_picker_platform_interface:
...
...
@@ -370,7 +370,7 @@ packages:
description:
name: image_picker_platform_interface
sha256: fa4e815e6fcada50e35718727d83ba1c92f1edf95c0b4436554cec301b56233b
url: "https://pub.
flutter-io.cn
"
url: "https://pub.
dev
"
source: hosted
version: "2.9.3"
intl:
...
...
@@ -378,7 +378,7 @@ packages:
description:
name: intl
sha256: a3715e3bc90294e971cb7dc063fbf3cd9ee0ebf8604ffeafabd9e6f16abbdbe6
url: "https://pub.
flutter-io.cn
"
url: "https://pub.
dev
"
source: hosted
version: "0.18.0"
ionicons:
...
...
@@ -386,7 +386,7 @@ packages:
description:
name: ionicons
sha256: "5496bc65a16115ecf05b15b78f494ee4a8869504357668f0a11d689e970523cf"
url: "https://pub.
flutter-io.cn
"
url: "https://pub.
dev
"
source: hosted
version: "0.2.2"
js:
...
...
@@ -394,7 +394,7 @@ packages:
description:
name: js
sha256: f2c445dce49627136094980615a031419f7f3eb393237e4ecd97ac15dea343f3
url: "https://pub.
flutter-io.cn
"
url: "https://pub.
dev
"
source: hosted
version: "0.6.7"
lints:
...
...
@@ -402,7 +402,7 @@ packages:
description:
name: lints
sha256: "0a217c6c989d21039f1498c3ed9f3ed71b354e69873f13a8dfc3c9fe76f1b452"
url: "https://pub.
flutter-io.cn
"
url: "https://pub.
dev
"
source: hosted
version: "2.1.1"
logger:
...
...
@@ -410,7 +410,7 @@ packages:
description:
name: logger
sha256: db2ff852ed77090ba9f62d3611e4208a3d11dfa35991a81ae724c113fcb3e3f7
url: "https://pub.
flutter-io.cn
"
url: "https://pub.
dev
"
source: hosted
version: "1.3.0"
logging:
...
...
@@ -418,7 +418,7 @@ packages:
description:
name: logging
sha256: "623a88c9594aa774443aa3eb2d41807a48486b5613e67599fb4c41c0ad47c340"
url: "https://pub.
flutter-io.cn
"
url: "https://pub.
dev
"
source: hosted
version: "1.2.0"
matcher:
...
...
@@ -426,7 +426,7 @@ packages:
description:
name: matcher
sha256: "6501fbd55da300384b768785b83e5ce66991266cec21af89ab9ae7f5ce1c4cbb"
url: "https://pub.
flutter-io.cn
"
url: "https://pub.
dev
"
source: hosted
version: "0.12.15"
material_color_utilities:
...
...
@@ -434,7 +434,7 @@ packages:
description:
name: material_color_utilities
sha256: d92141dc6fe1dad30722f9aa826c7fbc896d021d792f80678280601aff8cf724
url: "https://pub.
flutter-io.cn
"
url: "https://pub.
dev
"
source: hosted
version: "0.2.0"
meta:
...
...
@@ -442,7 +442,7 @@ packages:
description:
name: meta
sha256: "3c74dbf8763d36539f114c799d8a2d87343b5067e9d796ca22b5eb8437090ee3"
url: "https://pub.
flutter-io.cn
"
url: "https://pub.
dev
"
source: hosted
version: "1.9.1"
mime:
...
...
@@ -450,7 +450,7 @@ packages:
description:
name: mime
sha256: e4ff8e8564c03f255408decd16e7899da1733852a9110a58fe6d1b817684a63e
url: "https://pub.
flutter-io.cn
"
url: "https://pub.
dev
"
source: hosted
version: "1.0.4"
nested:
...
...
@@ -458,7 +458,7 @@ packages:
description:
name: nested
sha256: "03bac4c528c64c95c722ec99280375a6f2fc708eec17c7b3f07253b626cd2a20"
url: "https://pub.
flutter-io.cn
"
url: "https://pub.
dev
"
source: hosted
version: "1.0.0"
oktoast:
...
...
@@ -466,7 +466,7 @@ packages:
description:
name: oktoast
sha256: f1366c5c793ddfb8f55bc6fc3e45db43c45debf173b765fb4c5ec096cbdeb84a
url: "https://pub.
flutter-io.cn
"
url: "https://pub.
dev
"
source: hosted
version: "3.4.0"
package_info_plus:
...
...
@@ -474,7 +474,7 @@ packages:
description:
name: package_info_plus
sha256: "7e76fad405b3e4016cd39d08f455a4eb5199723cf594cd1b8916d47140d93017"
url: "https://pub.
flutter-io.cn
"
url: "https://pub.
dev
"
source: hosted
version: "4.2.0"
package_info_plus_platform_interface:
...
...
@@ -482,7 +482,7 @@ packages:
description:
name: package_info_plus_platform_interface
sha256: "9bc8ba46813a4cc42c66ab781470711781940780fd8beddd0c3da62506d3a6c6"
url: "https://pub.
flutter-io.cn
"
url: "https://pub.
dev
"
source: hosted
version: "2.0.1"
path:
...
...
@@ -490,7 +490,7 @@ packages:
description:
name: path
sha256: "8829d8a55c13fc0e37127c29fedf290c102f4e40ae94ada574091fe0ff96c917"
url: "https://pub.
flutter-io.cn
"
url: "https://pub.
dev
"
source: hosted
version: "1.8.3"
path_drawing:
...
...
@@ -498,7 +498,7 @@ packages:
description:
name: path_drawing
sha256: bbb1934c0cbb03091af082a6389ca2080345291ef07a5fa6d6e078ba8682f977
url: "https://pub.
flutter-io.cn
"
url: "https://pub.
dev
"
source: hosted
version: "1.0.1"
path_parsing:
...
...
@@ -506,7 +506,7 @@ packages:
description:
name: path_parsing
sha256: e3e67b1629e6f7e8100b367d3db6ba6af4b1f0bb80f64db18ef1fbabd2fa9ccf
url: "https://pub.
flutter-io.cn
"
url: "https://pub.
dev
"
source: hosted
version: "1.0.1"
path_provider:
...
...
@@ -514,7 +514,7 @@ packages:
description:
name: path_provider
sha256: b27217933eeeba8ff24845c34003b003b2b22151de3c908d0e679e8fe1aa078b
url: "https://pub.
flutter-io.cn
"
url: "https://pub.
dev
"
source: hosted
version: "2.1.2"
path_provider_android:
...
...
@@ -522,7 +522,7 @@ packages:
description:
name: path_provider_android
sha256: "477184d672607c0a3bf68fbbf601805f92ef79c82b64b4d6eb318cbca4c48668"
url: "https://pub.
flutter-io.cn
"
url: "https://pub.
dev
"
source: hosted
version: "2.2.2"
path_provider_foundation:
...
...
@@ -530,7 +530,7 @@ packages:
description:
name: path_provider_foundation
sha256: "5a7999be66e000916500be4f15a3633ebceb8302719b47b9cc49ce924125350f"
url: "https://pub.
flutter-io.cn
"
url: "https://pub.
dev
"
source: hosted
version: "2.3.2"
path_provider_linux:
...
...
@@ -538,7 +538,7 @@ packages:
description:
name: path_provider_linux
sha256: f7a1fe3a634fe7734c8d3f2766ad746ae2a2884abe22e241a8b301bf5cac3279
url: "https://pub.
flutter-io.cn
"
url: "https://pub.
dev
"
source: hosted
version: "2.2.1"
path_provider_platform_interface:
...
...
@@ -546,7 +546,7 @@ packages:
description:
name: path_provider_platform_interface
sha256: "88f5779f72ba699763fa3a3b06aa4bf6de76c8e5de842cf6f29e2e06476c2334"
url: "https://pub.
flutter-io.cn
"
url: "https://pub.
dev
"
source: hosted
version: "2.1.2"
path_provider_windows:
...
...
@@ -554,7 +554,7 @@ packages:
description:
name: path_provider_windows
sha256: "8bc9f22eee8690981c22aa7fc602f5c85b497a6fb2ceb35ee5a5e5ed85ad8170"
url: "https://pub.
flutter-io.cn
"
url: "https://pub.
dev
"
source: hosted
version: "2.2.1"
permission_handler:
...
...
@@ -562,7 +562,7 @@ packages:
description:
name: permission_handler
sha256: "284a66179cabdf942f838543e10413246f06424d960c92ba95c84439154fcac8"
url: "https://pub.
flutter-io.cn
"
url: "https://pub.
dev
"
source: hosted
version: "11.0.1"
permission_handler_android:
...
...
@@ -570,7 +570,7 @@ packages:
description:
name: permission_handler_android
sha256: f9fddd3b46109bd69ff3f9efa5006d2d309b7aec0f3c1c5637a60a2d5659e76e
url: "https://pub.
flutter-io.cn
"
url: "https://pub.
dev
"
source: hosted
version: "11.1.0"
permission_handler_apple:
...
...
@@ -578,7 +578,7 @@ packages:
description:
name: permission_handler_apple
sha256: "99e220bce3f8877c78e4ace901082fb29fa1b4ebde529ad0932d8d664b34f3f5"
url: "https://pub.
flutter-io.cn
"
url: "https://pub.
dev
"
source: hosted
version: "9.1.4"
permission_handler_platform_interface:
...
...
@@ -586,7 +586,7 @@ packages:
description:
name: permission_handler_platform_interface
sha256: "6760eb5ef34589224771010805bea6054ad28453906936f843a8cc4d3a55c4a4"
url: "https://pub.
flutter-io.cn
"
url: "https://pub.
dev
"
source: hosted
version: "3.12.0"
permission_handler_windows:
...
...
@@ -594,7 +594,7 @@ packages:
description:
name: permission_handler_windows
sha256: cc074aace208760f1eee6aa4fae766b45d947df85bc831cde77009cdb4720098
url: "https://pub.
flutter-io.cn
"
url: "https://pub.
dev
"
source: hosted
version: "0.1.3"
platform:
...
...
@@ -602,7 +602,7 @@ packages:
description:
name: platform
sha256: "12220bb4b65720483f8fa9450b4332347737cf8213dd2840d8b2c823e47243ec"
url: "https://pub.
flutter-io.cn
"
url: "https://pub.
dev
"
source: hosted
version: "3.1.4"
plugin_platform_interface:
...
...
@@ -610,7 +610,7 @@ packages:
description:
name: plugin_platform_interface
sha256: "4820fbfdb9478b1ebae27888254d445073732dae3d6ea81f0b7e06d5dedc3f02"
url: "https://pub.
flutter-io.cn
"
url: "https://pub.
dev
"
source: hosted
version: "2.1.8"
provider:
...
...
@@ -618,7 +618,7 @@ packages:
description:
name: provider
sha256: "9a96a0a19b594dbc5bf0f1f27d2bc67d5f95957359b461cd9feb44ed6ae75096"
url: "https://pub.
flutter-io.cn
"
url: "https://pub.
dev
"
source: hosted
version: "6.1.1"
pull_to_refresh_flutter3:
...
...
@@ -626,7 +626,7 @@ packages:
description:
name: pull_to_refresh_flutter3
sha256: "223a6241067162dc15cf8c46c05af998ce7aa85e0703d8f696101eb1b5629d76"
url: "https://pub.
flutter-io.cn
"
url: "https://pub.
dev
"
source: hosted
version: "2.0.1"
rational:
...
...
@@ -634,7 +634,7 @@ packages:
description:
name: rational
sha256: ba58e9e18df9abde280e8b10051e4bce85091e41e8e7e411b6cde2e738d357cf
url: "https://pub.
flutter-io.cn
"
url: "https://pub.
dev
"
source: hosted
version: "2.2.2"
recase:
...
...
@@ -642,7 +642,7 @@ packages:
description:
name: recase
sha256: e4eb4ec2dcdee52dcf99cb4ceabaffc631d7424ee55e56f280bc039737f89213
url: "https://pub.
flutter-io.cn
"
url: "https://pub.
dev
"
source: hosted
version: "4.1.0"
rxdart:
...
...
@@ -650,7 +650,7 @@ packages:
description:
name: rxdart
sha256: "0c7c0cedd93788d996e33041ffecda924cc54389199cde4e6a34b440f50044cb"
url: "https://pub.
flutter-io.cn
"
url: "https://pub.
dev
"
source: hosted
version: "0.27.7"
shared_preferences:
...
...
@@ -658,7 +658,7 @@ packages:
description:
name: shared_preferences
sha256: "16d3fb6b3692ad244a695c0183fca18cf81fd4b821664394a781de42386bf022"
url: "https://pub.
flutter-io.cn
"
url: "https://pub.
dev
"
source: hosted
version: "2.1.1"
shared_preferences_android:
...
...
@@ -666,7 +666,7 @@ packages:
description:
name: shared_preferences_android
sha256: "8568a389334b6e83415b6aae55378e158fbc2314e074983362d20c562780fb06"
url: "https://pub.
flutter-io.cn
"
url: "https://pub.
dev
"
source: hosted
version: "2.2.1"
shared_preferences_foundation:
...
...
@@ -674,7 +674,7 @@ packages:
description:
name: shared_preferences_foundation
sha256: "7708d83064f38060c7b39db12aefe449cb8cdc031d6062280087bc4cdb988f5c"
url: "https://pub.
flutter-io.cn
"
url: "https://pub.
dev
"
source: hosted
version: "2.3.5"
shared_preferences_linux:
...
...
@@ -682,7 +682,7 @@ packages:
description:
name: shared_preferences_linux
sha256: "9f2cbcf46d4270ea8be39fa156d86379077c8a5228d9dfdb1164ae0bb93f1faa"
url: "https://pub.
flutter-io.cn
"
url: "https://pub.
dev
"
source: hosted
version: "2.3.2"
shared_preferences_platform_interface:
...
...
@@ -690,7 +690,7 @@ packages:
description:
name: shared_preferences_platform_interface
sha256: "22e2ecac9419b4246d7c22bfbbda589e3acf5c0351137d87dd2939d984d37c3b"
url: "https://pub.
flutter-io.cn
"
url: "https://pub.
dev
"
source: hosted
version: "2.3.2"
shared_preferences_web:
...
...
@@ -698,7 +698,7 @@ packages:
description:
name: shared_preferences_web
sha256: d762709c2bbe80626ecc819143013cc820fa49ca5e363620ee20a8b15a3e3daf
url: "https://pub.
flutter-io.cn
"
url: "https://pub.
dev
"
source: hosted
version: "2.2.1"
shared_preferences_windows:
...
...
@@ -706,7 +706,7 @@ packages:
description:
name: shared_preferences_windows
sha256: "841ad54f3c8381c480d0c9b508b89a34036f512482c407e6df7a9c4aa2ef8f59"
url: "https://pub.
flutter-io.cn
"
url: "https://pub.
dev
"
source: hosted
version: "2.3.2"
sky_engine:
...
...
@@ -719,7 +719,7 @@ packages:
description:
name: source_span
sha256: dd904f795d4b4f3b870833847c461801f6750a9fa8e61ea5ac53f9422b31f250
url: "https://pub.
flutter-io.cn
"
url: "https://pub.
dev
"
source: hosted
version: "1.9.1"
stack_trace:
...
...
@@ -727,7 +727,7 @@ packages:
description:
name: stack_trace
sha256: c3c7d8edb15bee7f0f74debd4b9c5f3c2ea86766fe4178eb2a18eb30a0bdaed5
url: "https://pub.
flutter-io.cn
"
url: "https://pub.
dev
"
source: hosted
version: "1.11.0"
stream_channel:
...
...
@@ -735,7 +735,7 @@ packages:
description:
name: stream_channel
sha256: "83615bee9045c1d322bbbd1ba209b7a749c2cbcdcb3fdd1df8eb488b3279c1c8"
url: "https://pub.
flutter-io.cn
"
url: "https://pub.
dev
"
source: hosted
version: "2.1.1"
string_scanner:
...
...
@@ -743,7 +743,7 @@ packages:
description:
name: string_scanner
sha256: "556692adab6cfa87322a115640c11f13cb77b3f076ddcc5d6ae3c20242bedcde"
url: "https://pub.
flutter-io.cn
"
url: "https://pub.
dev
"
source: hosted
version: "1.2.0"
synchronized:
...
...
@@ -751,7 +751,7 @@ packages:
description:
name: synchronized
sha256: "539ef412b170d65ecdafd780f924e5be3f60032a1128df156adad6c5b373d558"
url: "https://pub.
flutter-io.cn
"
url: "https://pub.
dev
"
source: hosted
version: "3.1.0+1"
term_glyph:
...
...
@@ -759,7 +759,7 @@ packages:
description:
name: term_glyph
sha256: a29248a84fbb7c79282b40b8c72a1209db169a2e0542bce341da992fe1bc7e84
url: "https://pub.
flutter-io.cn
"
url: "https://pub.
dev
"
source: hosted
version: "1.2.1"
test_api:
...
...
@@ -767,7 +767,7 @@ packages:
description:
name: test_api
sha256: eb6ac1540b26de412b3403a163d919ba86f6a973fe6cc50ae3541b80092fdcfb
url: "https://pub.
flutter-io.cn
"
url: "https://pub.
dev
"
source: hosted
version: "0.5.1"
typed_data:
...
...
@@ -775,7 +775,7 @@ packages:
description:
name: typed_data
sha256: facc8d6582f16042dd49f2463ff1bd6e2c9ef9f3d5da3d9b087e244a7b564b3c
url: "https://pub.
flutter-io.cn
"
url: "https://pub.
dev
"
source: hosted
version: "1.3.2"
uuid:
...
...
@@ -783,7 +783,7 @@ packages:
description:
name: uuid
sha256: "648e103079f7c64a36dc7d39369cabb358d377078a051d6ae2ad3aa539519313"
url: "https://pub.
flutter-io.cn
"
url: "https://pub.
dev
"
source: hosted
version: "3.0.7"
vector_math:
...
...
@@ -791,7 +791,7 @@ packages:
description:
name: vector_math
sha256: "80b3257d1492ce4d091729e3a67a60407d227c27241d6927be0130c98e741803"
url: "https://pub.
flutter-io.cn
"
url: "https://pub.
dev
"
source: hosted
version: "2.1.4"
win32:
...
...
@@ -799,7 +799,7 @@ packages:
description:
name: win32
sha256: "350a11abd2d1d97e0cc7a28a81b781c08002aa2864d9e3f192ca0ffa18b06ed3"
url: "https://pub.
flutter-io.cn
"
url: "https://pub.
dev
"
source: hosted
version: "5.0.9"
xdg_directories:
...
...
@@ -807,7 +807,7 @@ packages:
description:
name: xdg_directories
sha256: faea9dee56b520b55a566385b84f2e8de55e7496104adada9962e0bd11bcff1d
url: "https://pub.
flutter-io.cn
"
url: "https://pub.
dev
"
source: hosted
version: "1.0.4"
sdks:
...
...
编写
预览
Markdown
格式
0%
重试
或
添加新文件
添加附件
取消
您添加了
0
人
到此讨论。请谨慎行事。
请先完成此评论的编辑!
取消
请
注册
或者
登录
后发表评论