Skip to content
项目
群组
代码片段
帮助
当前项目
正在载入...
登录 / 注册
切换导航面板
B
book-app
项目
项目
详情
活动
周期分析
仓库
仓库
文件
提交
分支
标签
贡献者
图表
比较
统计图
议题
0
议题
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
CI / CD
CI / CD
流水线
作业
日程
统计图
Wiki
Wiki
代码片段
代码片段
成员
成员
折叠边栏
关闭边栏
活动
图像
聊天
创建新问题
作业
提交
问题看板
Open sidebar
EzijingWeb
book-app
Commits
e62703f8
提交
e62703f8
authored
2月 20, 2024
作者:
maodou
浏览文件
操作
浏览文件
下载
差异文件
Merge remote-tracking branch 'origin/test' into test
上级
79b2f474
a26a9f90
隐藏空白字符变更
内嵌
并排
正在显示
17 个修改的文件
包含
291 行增加
和
62 行删除
+291
-62
mine.dart
lib/apis/mine.dart
+33
-0
mine.dart
lib/models/mine.dart
+8
-4
shop.dart
lib/models/shop.dart
+6
-0
view.dart
lib/pages/ad_detail/view.dart
+1
-1
controller.dart
lib/pages/book_pay/controller.dart
+11
-3
banner.dart
lib/pages/course/widgets/banner.dart
+1
-1
controller.dart
lib/pages/mine/controller.dart
+1
-1
account.dart
lib/pages/mine/widgets/account.dart
+9
-8
view.dart
lib/pages/pay_coupon/view.dart
+1
-0
discuss_controller.dart
lib/pages/read_web/discuss_controller.dart
+2
-0
discuss.dart
lib/pages/user_discuss_des/widgets/discuss.dart
+83
-11
index.dart
lib/pages/user_love/index.dart
+1
-0
view.dart
lib/pages/user_love/view.dart
+8
-3
note.dart
lib/pages/user_notes_des/widgets/note.dart
+1
-1
view.dart
lib/pages/user_order/view.dart
+36
-29
controller.dart
lib/pages/user_order_awaiting/controller.dart
+87
-0
index.dart
lib/pages/user_order_awaiting/index.dart
+2
-0
没有找到文件。
lib/apis/mine.dart
浏览文件 @
e62703f8
...
...
@@ -460,5 +460,38 @@ abstract class MineAPI {
return
false
;
}
/// 26、获取支付信息
static
Future
<
PayOrderModel
>
getPayInfo
({
required
String
ordersNum
,
})
async
{
final
result
=
await
HttpService
.
to
.
post
(
'/v1/orders/Orders/payAgain'
,
params:
{
'ordersNum'
:
ordersNum
,
},
showLoading:
true
);
if
(
result
.
data
is
!
Map
)
return
PayOrderModel
();
return
PayOrderModel
.
fromJson
(
result
.
data
);
}
/// 27、紫荆币支付
static
Future
<
bool
>
coinPay
({
required
String
ordersNum
,
})
async
{
final
result
=
await
HttpService
.
to
.
post
(
'/v1/book/Information/editNotes'
,
params:
{
'ordersNum'
:
ordersNum
,
},
showLoading:
true
);
if
(
result
.
data
is
Map
&&
result
.
data
[
'is_success'
]
==
1
)
{
return
true
;
}
return
false
;
}
}
lib/models/mine.dart
浏览文件 @
e62703f8
...
...
@@ -526,7 +526,8 @@ class DiscussModel {
id
=
json
[
'id'
];
chapterId
=
json
[
'chapter_id'
];
chapterName
=
json
[
'chapter_name'
];
content
=
json
[
'content'
];
// content = json['content'];
content
=
json
[
'content'
]
!=
null
?
NoteContentModel
.
fromJson
(
json
[
'content'
])
:
null
;
quoteContent
=
json
[
'quote_content'
];
title
=
json
[
'title'
];
replyId
=
json
[
'reply_id'
];
...
...
@@ -550,7 +551,7 @@ class DiscussModel {
num
?
id
;
num
?
chapterId
;
String
?
chapterName
;
String
?
content
;
NoteContentModel
?
content
;
String
?
quoteContent
;
String
?
title
;
num
?
replyId
;
...
...
@@ -569,7 +570,7 @@ class DiscussModel {
num
?
id
,
num
?
chapterId
,
String
?
chapterName
,
String
?
content
,
NoteContentModel
?
content
,
String
?
quoteContent
,
String
?
title
,
num
?
replyId
,
...
...
@@ -609,7 +610,10 @@ class DiscussModel {
map
[
'id'
]
=
id
;
map
[
'chapter_id'
]
=
chapterId
;
map
[
'chapter_name'
]
=
chapterName
;
map
[
'content'
]
=
content
;
// map['content'] = content;
if
(
content
!=
null
)
{
map
[
'note_content'
]
=
content
?.
toJson
();
}
map
[
'quote_content'
]
=
quoteContent
;
map
[
'title'
]
=
title
;
map
[
'reply_id'
]
=
replyId
;
...
...
lib/models/shop.dart
浏览文件 @
e62703f8
...
...
@@ -170,6 +170,7 @@ class PayOrderModel {
this
.
ordersnum
,
this
.
encryptionOrder
,
this
.
code
,
this
.
isMoneys
,
String
?
msg
,
});
...
...
@@ -185,6 +186,7 @@ class PayOrderModel {
encryptionOrder
=
json
[
'encryption_order'
];
code
=
json
[
'code'
];
msg
=
json
[
'msg'
];
isMoneys
=
json
[
'is_moneys'
];
}
String
?
appid
;
String
?
partnerid
;
...
...
@@ -197,6 +199,7 @@ class PayOrderModel {
String
?
encryptionOrder
;
num
?
code
;
String
?
msg
;
num
?
isMoneys
;
PayOrderModel
copyWith
({
String
?
appid
,
String
?
partnerid
,
String
?
prepayid
,
...
...
@@ -208,6 +211,7 @@ class PayOrderModel {
String
?
encryptionOrder
,
num
?
code
,
String
?
msg
,
num
?
isMoneys
,
})
=>
PayOrderModel
(
appid:
appid
??
this
.
appid
,
partnerid:
partnerid
??
this
.
partnerid
,
prepayid:
prepayid
??
this
.
prepayid
,
...
...
@@ -219,6 +223,7 @@ class PayOrderModel {
encryptionOrder:
encryptionOrder
??
this
.
encryptionOrder
,
code:
code
??
this
.
code
,
msg:
msg
??
this
.
msg
,
isMoneys:
isMoneys
??
this
.
isMoneys
);
Map
<
String
,
dynamic
>
toJson
()
{
final
map
=
<
String
,
dynamic
>{};
...
...
@@ -233,6 +238,7 @@ class PayOrderModel {
map
[
'encryption_order'
]
=
encryptionOrder
;
map
[
'code'
]
=
code
;
map
[
'msg'
]
=
msg
;
map
[
'is_moneys'
]
=
isMoneys
;
return
map
;
}
...
...
lib/pages/ad_detail/view.dart
浏览文件 @
e62703f8
...
...
@@ -17,7 +17,7 @@ class _AdDetailPageState extends State<AdDetailPage> {
Widget
build
(
BuildContext
context
)
{
return
Scaffold
(
appBar:
AppBar
(
title:
const
Text
(
'用户协议'
),
),
body:
InAppWebView
(
initialUrlRequest:
URLRequest
(
...
...
lib/pages/book_pay/controller.dart
浏览文件 @
e62703f8
...
...
@@ -54,7 +54,7 @@ class BookPayController extends GetxController {
/// 使用优惠券
void
setUseCoupon
(
CouponModel
model
){
useCouponModel
=
model
;
print
(
'使用优惠券。。。。。。。。。。。。。。。。'
);
print
(
'使用优惠券。。。。。。。。。。。。。。。。
${model.couponRecId}
'
);
computeFinalPrice
();
}
...
...
@@ -194,12 +194,20 @@ class BookPayController extends GetxController {
// 微信
if
(
payModel
.
type
==
1
){
String
orderNumber
=
payOrderModel
.
ordersnum
.
toString
();
requestWechat
();
if
(
payOrderModel
.
isMoneys
==
0
){
requestOrderStatus
();
}
else
{
requestWechat
();
}
}
// 支付宝
else
if
(
payModel
.
type
==
2
){
String
orderNumber
=
payOrderModel
.
ordersnum
.
toString
();
requestAliPay
();
if
(
payOrderModel
.
isMoneys
==
0
){
requestOrderStatus
();
}
else
{
requestAliPay
();
}
}
// 书豆
else
if
(
payModel
.
type
==
3
){
...
...
lib/pages/course/widgets/banner.dart
浏览文件 @
e62703f8
...
...
@@ -47,7 +47,7 @@ class BuildBanner extends StatelessWidget {
},
child:
ClipRRect
(
borderRadius:
BorderRadius
.
circular
(
8
.
w
),
child:
CustomImage
.
network
(
url:
item
.
pic
??
''
)
child:
CustomImage
.
network
(
url:
item
.
pic
??
''
,
fit:
BoxFit
.
contain
,
)
),
),
// child: CustomImage.asset(
...
...
lib/pages/mine/controller.dart
浏览文件 @
e62703f8
...
...
@@ -63,7 +63,7 @@ class MineController extends GetxController {
link:
Routes
.
point
,
icon:
'assets/images/point.png'
),
ReadModel
(
name:
'紫
金
币'
,
name:
'紫
荆
币'
,
value:
userInfo
.
beanNums
.
toString
(),
link:
Routes
.
coin
,
icon:
'assets/images/coin.png'
),
...
...
lib/pages/mine/widgets/account.dart
浏览文件 @
e62703f8
...
...
@@ -40,14 +40,15 @@ class BuildAccount extends StatelessWidget {
return
Expanded
(
child:
GestureDetector
(
onTap:
(){
if
(
model
.
link
!=
null
){
if
(
model
.
link
!=
Routes
.
love
){
context
.
pushNamed
(
model
.
link
!);
}
else
{
if
(
onTap
!=
null
)
onTap
!(
model
);
}
}
if
(
onTap
!=
null
)
onTap
!(
model
);
// if (model.link != null){
// if (model.link != Routes.love){
// context.pushNamed(model.link!);
// }
// else{
// if (onTap !=null) onTap!(model);
// }
// }
},
child:
Container
(
color:
Colors
.
white
,
...
...
lib/pages/pay_coupon/view.dart
浏览文件 @
e62703f8
...
...
@@ -90,6 +90,7 @@ class _CouponPageState extends State<CouponPage> with AutomaticKeepAliveClientMi
itemBuilder:
(
BuildContext
context
,
int
index
){
CouponModel
model
=
controller
.
coupons
[
index
];
return
BuildItem
(
model:
model
,
useTap:
(){
Console
.
log
(
'选择优惠券--------------------------------
${model.couponRecId}
'
);
widget
.
payController
.
setUseCoupon
(
model
);
context
.
pop
();
},);
...
...
lib/pages/read_web/discuss_controller.dart
浏览文件 @
e62703f8
...
...
@@ -39,6 +39,7 @@ class DiscussController extends GetxController {
bookId:
bookDetailModel
.
bookId
.
toString
(),
chapterId:
chapterId
);
Console
.
log
(
'--------------------------------'
);
// 如果是刷新 清理数据
if
(
isRefresh
)
discuss
.
clear
();
discuss
.
addAll
(
result
);
...
...
@@ -54,6 +55,7 @@ class DiscussController extends GetxController {
refreshController
.
finishRefresh
(
IndicatorResult
.
success
);
refreshController
.
resetFooter
();
}
catch
(
error
)
{
Console
.
log
(
'--error-----------------------------
$error
-'
);
refreshController
.
finishRefresh
(
IndicatorResult
.
fail
);
}
}
...
...
lib/pages/user_discuss_des/widgets/discuss.dart
浏览文件 @
e62703f8
...
...
@@ -73,14 +73,18 @@ class BuildDiscuss extends StatelessWidget {
Widget
_buildItem
(
DiscussModel
model
,{
int
type
=
0
}){
return
Row
(
crossAxisAlignment:
CrossAxisAlignment
.
start
,
children:
[
ClipRRect
(
borderRadius:
BorderRadius
.
circular
(
17.5
.
w
),
child:
Container
(
width:
35
.
w
,
height:
35
.
w
,
color:
Colors
.
red
,
child:
CustomImage
.
network
(
url:
model
.
personPic
??
''
),
Container
(
margin:
EdgeInsets
.
only
(
top:
10
.
w
),
child:
ClipRRect
(
borderRadius:
BorderRadius
.
circular
(
17.5
.
w
),
child:
Container
(
width:
35
.
w
,
height:
35
.
w
,
color:
Colors
.
red
,
child:
CustomImage
.
network
(
url:
model
.
personPic
??
''
),
),
),
),
Expanded
(
...
...
@@ -96,18 +100,25 @@ class BuildDiscuss extends StatelessWidget {
children:
[
Text
(
model
.
personName
??
''
,
style:
TextStyle
(
fontSize:
12
.
w
,
height:
1.5
,
color:
Colours
.
c9
),),
Gaps
.
hGaps10
,
type
==
0
?
const
SizedBox
():
Text
(
'发起人'
,
style:
TextStyle
(
fontSize:
11
.
w
,
height:
1.5
,
color:
AppTheme
.
primary
),)
type
==
1
?
const
SizedBox
():
Text
(
'发起人'
,
style:
TextStyle
(
fontSize:
11
.
w
,
height:
1.5
,
color:
AppTheme
.
primary
),)
],
),
Text
(
model
.
createTime
??
''
,
style:
TextStyle
(
fontSize:
12
.
w
,
height:
1.5
,
color:
Colours
.
c9
),)
],
),
type
==
0
?
Text
(
model
.
content
??
''
,
style:
TextStyle
(
fontSize:
13
.
w
,
height:
1.5
,
color:
Colours
.
c3
),)
type
==
0
?
Column
(
crossAxisAlignment:
CrossAxisAlignment
.
start
,
children:
[
Text
(
model
.
content
?.
text
?.
content
??
''
,
style:
TextStyle
(
fontSize:
13
.
w
,
height:
1.5
,
color:
Colours
.
c3
),),
Gaps
.
vGaps10
,
_buildImageGridView
()
],
)
:
RichText
(
text:
TextSpan
(
children:
[
TextSpan
(
text:
'回复 '
,
style:
TextStyle
(
fontSize:
13
.
w
,
height:
1.5
,
color:
Colours
.
c3
)),
TextSpan
(
text:
model
.
replacePersonName
??
''
,
style:
TextStyle
(
fontSize:
13
.
w
,
height:
1.5
,
color:
Colours
.
c9
)),
TextSpan
(
text:
':
${model.content??''}
'
,
style:
TextStyle
(
fontSize:
13
.
w
,
height:
1.5
,
color:
Colours
.
c3
)),
TextSpan
(
text:
':
${model.content?
.text?.content?
?''}
'
,
style:
TextStyle
(
fontSize:
13
.
w
,
height:
1.5
,
color:
Colours
.
c3
)),
]
)),
Row
(
...
...
@@ -151,11 +162,72 @@ class BuildDiscuss extends StatelessWidget {
physics:
const
NeverScrollableScrollPhysics
(),
shrinkWrap:
true
,
itemBuilder:
(
BuildContext
context
,
int
index
){
return
_buildItem
(
data
[
index
]);
return
_buildItem
(
data
[
index
]
,
type:
1
);
},
itemCount:
data
.
length
,
);
}
// 图片
Widget
_buildImageGridView
(){
return
GridView
.
builder
(
// padding: const EdgeInsets.only(left: 13,top: 10),
physics:
const
NeverScrollableScrollPhysics
(),
shrinkWrap:
true
,
gridDelegate:
SliverGridDelegateWithFixedCrossAxisCount
(
crossAxisCount:
6
,
crossAxisSpacing:
2
.
w
,
mainAxisSpacing:
2
.
w
,
childAspectRatio:
1
),
itemBuilder:
(
BuildContext
context
,
int
index
)
{
MediaModel
?
mediaModel
=
model
.
content
?.
image
?[
index
];
return
CustomImage
.
network
(
url:
model
?.
content
?.
image
?[
index
].
content
??
''
,
fit:
BoxFit
.
cover
,);
// return Container(
// color: Colors.red,
// );
},
itemCount:
model
.
content
?.
image
?.
length
,
// itemCount: 2,
);
}
// Widget _buildAudioListView(){
// return ListView.builder(
// physics: const NeverScrollableScrollPhysics(),
// shrinkWrap: true,
// itemBuilder: (BuildContext context, int index) {
// MediaModel mediaModel = model.noteContent!.audio![index];
// return Container(
// height: 20.w,
// margin: EdgeInsets.only(right: 130.w),
// child: Container(
// margin: EdgeInsets.only(top: 5.w),
// padding: EdgeInsets.only(right:20.w,left: 10.w),
// decoration: BoxDecoration(
// borderRadius: BorderRadius.circular(10.w),
// color: Colours.cF9,
// ),
// child: Row(
// // mainAxisSize: MainAxisSize.min,
// mainAxisAlignment:MainAxisAlignment.spaceBetween,
// children: [
// GestureDetector(
// onTap: (){
// if (onTapAudio !=null) onTapAudio!(mediaModel);
// },
// child: Image.asset('assets/images/audio.png')
// ),
// Text('0:00/${mediaModel.duration}',style: TextStyle(fontSize: 10.w,height: 1.4,color: Colours.c9),)
// ],
// ),
// ),
// );
// },
// itemCount: model.noteContent?.audio?.length,
// );
// }
}
lib/pages/user_love/index.dart
浏览文件 @
e62703f8
...
...
@@ -9,6 +9,7 @@ import 'package:flutter_screenutil/flutter_screenutil.dart';
import
'package:get/get.dart'
;
import
'package:go_router/go_router.dart'
;
import
'../../routes/index.dart'
;
import
'../../theme.dart'
;
import
'../../utils/index.dart'
;
import
'../../widgets/index.dart'
;
...
...
lib/pages/user_love/view.dart
浏览文件 @
e62703f8
...
...
@@ -31,9 +31,14 @@ class _UserLovePageState extends State<UserLovePage> {
child:
ListView
.
builder
(
itemBuilder:
(
BuildContext
context
,
int
index
){
CourseModel
model
=
controller
.
loves
[
index
];
return
BuildItem
(
model:
model
,
onTap:
(){
controller
.
unLoved
(
bookId:
model
.
bookId
.
toString
());
},);
return
GestureDetector
(
onTap:
(){
context
.
pushNamed
(
Routes
.
bookDetail
,
queryParameters:
{
'book_id'
:
model
.
bookId
.
toString
()});
},
child:
BuildItem
(
model:
model
,
onTap:
(){
controller
.
unLoved
(
bookId:
model
.
bookId
.
toString
());
},),
);
},
itemCount:
controller
.
loves
.
length
,
),
...
...
lib/pages/user_notes_des/widgets/note.dart
浏览文件 @
e62703f8
...
...
@@ -105,7 +105,7 @@ class BuildNote extends StatelessWidget {
childAspectRatio:
1
),
itemBuilder:
(
BuildContext
context
,
int
index
)
{
return
CustomImage
.
network
(
url:
model
.
noteContent
!.
image
!
[
index
].
content
??
''
,
fit:
BoxFit
.
cover
,);
return
CustomImage
.
network
(
url:
model
.
noteContent
?.
image
?
[
index
].
content
??
''
,
fit:
BoxFit
.
cover
,);
},
itemCount:
model
.
noteContent
?.
image
?.
length
,
);
...
...
lib/pages/user_order/view.dart
浏览文件 @
e62703f8
...
...
@@ -76,39 +76,46 @@ class _UserOrderState extends State<UserOrderPage> with SingleTickerProviderStat
body: _buildBody(controller),
),
);*/
Scaffold
(
appBar:
CustomAppBar
(
automaticallyImplyLeading:
false
,
titleSpacing:
0
,
title:
Padding
(
padding:
EdgeInsets
.
symmetric
(
horizontal:
AppTheme
.
margin
),
child:
CustomInputSearch
(
controller:
searchController
,
readOnly:
true
,
hintText:
'搜索我的订单'
,
onTap:
()
{
context
.
pushNamed
(
Routes
.
orderSearch
);
},
WillPopScope
(
onWillPop:
()
async
{
context
.
pop
(
true
);
return
false
;
},
child:
Scaffold
(
appBar:
CustomAppBar
(
automaticallyImplyLeading:
false
,
titleSpacing:
0
,
title:
Padding
(
padding:
EdgeInsets
.
symmetric
(
horizontal:
AppTheme
.
margin
),
child:
CustomInputSearch
(
controller:
searchController
,
readOnly:
true
,
hintText:
'搜索我的订单'
,
onTap:
()
{
context
.
pushNamed
(
Routes
.
orderSearch
);
},
),
),
),
actions:
[
GestureDetector
(
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
),
actions:
[
GestureDetector
(
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
),
),
),
),
)
],
)
],
),
body:
_buildBody
(),
),
body:
_buildBody
(),
);
}
Widget
_buildBody
(
)
{
...
...
lib/pages/user_order_awaiting/controller.dart
浏览文件 @
e62703f8
...
...
@@ -10,6 +10,13 @@ class UserOrderAwaitingController extends GetxController {
// 应付款、订单编号等
List
<
OrderCompletedModel
>
orderAwaitings
=
[];
// 支付宝
Tobias
tobias
=
Tobias
();
// 微信
Fluwx
fluwx
=
Fluwx
();
late
PayOrderModel
payOrderModel
;
@override
void
onReady
()
{
...
...
@@ -49,4 +56,84 @@ class UserOrderAwaitingController extends GetxController {
update
();
}
Future
<
void
>
payOrder
()
async
{
if
(
model
.
payType
==
3
){
final
result
=
await
MineAPI
.
coinPay
(
ordersNum:
orderNum
);
if
(
result
){
Toast
.
show
(
'订单支付完成'
);
getOrderInfo
();
}
}
else
{
payOrderModel
=
await
MineAPI
.
getPayInfo
(
ordersNum:
orderNum
);
// 支付宝
if
(
model
.
payType
==
2
){
final
result
=
await
tobias
.
isAliPayInstalled
;
if
(!
result
){
Toast
.
show
(
'请先安装支付宝'
);
}
else
{
requestAliPay
();
}
}
// 微信
if
(
model
.
payType
==
1
){
final
result
=
await
fluwx
.
isWeChatInstalled
;
if
(!
result
){
Toast
.
show
(
'请先安装微信'
);
}
else
{
requestWechat
();
}
}
}
}
// 支付宝支付
void
requestAliPay
(){
print
(
'================================================================
${payOrderModel.encryptionOrder!}
'
);
tobias
.
pay
(
payOrderModel
.
encryptionOrder
!).
then
((
payResult
){
if
(
payResult
[
'resultStatus'
]
==
'9000'
)
{
requestOrderStatus
();
}
else
{
Toast
.
show
(
payResult
[
'memo'
].
toString
());
}
});
}
// 微信支付
void
requestWechat
(){
Payment
payment
=
Payment
(
appId:
payOrderModel
.
appid
??
''
,
partnerId:
payOrderModel
.
partnerid
??
''
,
prepayId:
payOrderModel
.
prepayid
??
''
,
packageValue:
payOrderModel
.
package
??
''
,
nonceStr:
payOrderModel
.
noncestr
??
''
,
timestamp:
payOrderModel
.
timestamp
!.
toInt
(),
sign:
payOrderModel
.
sign
??
''
);
fluwx
.
pay
(
which:
payment
);
fluwx
.
addSubscriber
((
response
)
{
if
(
response
.
errCode
==
0
)
{
requestOrderStatus
();
}
else
{
Toast
.
show
(
'
${response.errStr}
'
);
}
});
}
void
requestOrderStatus
()
async
{
final
result
=
await
ShopAPI
.
orderStatus
(
orderNumber:
payOrderModel
.
ordersnum
??
''
,
receipt:
''
);
if
(
result
.
paySuccess
==
1
){
Toast
.
show
(
'订单支付完成'
);
getOrderInfo
();
}
}
}
lib/pages/user_order_awaiting/index.dart
浏览文件 @
e62703f8
...
...
@@ -7,11 +7,13 @@ import 'package:flutter/material.dart';
import
'package:flutter_book/theme.dart'
;
import
'package:flutter_book/utils/index.dart'
;
import
'package:flutter_book/widgets/index.dart'
;
import
'package:fluwx/fluwx.dart'
;
import
'package:get/get.dart'
;
import
'package:get/get_state_manager/src/simple/get_controllers.dart'
;
import
'package:flutter_screenutil/flutter_screenutil.dart'
;
import
'package:get/get_state_manager/src/simple/get_state.dart'
;
import
'package:go_router/go_router.dart'
;
import
'package:tobias/tobias.dart'
;
import
'../../apis/index.dart'
;
import
'../../models/index.dart'
;
...
...
编写
预览
Markdown
格式
0%
重试
或
添加新文件
添加附件
取消
您添加了
0
人
到此讨论。请谨慎行事。
请先完成此评论的编辑!
取消
请
注册
或者
登录
后发表评论