Toggle navigation
Toggle navigation
This project
Loading...
Sign in
OnePoem
/
OnePoem-App
Go to a project
Toggle navigation
Toggle navigation pinning
Projects
Groups
Snippets
Help
Project
Activity
Repository
Pipelines
Graphs
Issues
0
Merge Requests
0
Wiki
Snippets
Network
Create a new issue
Builds
Commits
Issue Boards
Authored by
Chad
2022-11-05 23:27:28 +0800
Browse Files
Options
Browse Files
Download
Email Patches
Plain Diff
Commit
84b2723ff0822e51cbb18eaf31db2bce6c256b35
84b2723f
1 parent
d9ec8ff8
优化支付过程
Show whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
53 additions
and
61 deletions
lib/base/base_state.dart
lib/membership/models/membership_entity.dart
lib/membership/page/membership_page.dart
lib/base/base_state.dart
View file @
84b2723
...
...
@@ -28,4 +28,8 @@ abstract class BaseState<T extends StatefulWidget> extends State<T> {
toast
(
String
text
)
{
EasyLoading
.
showToast
(
text
);
}
Widget
buildLoading
()
{
return
const
Center
(
child:
CircularProgressIndicator
());
}
}
...
...
lib/membership/models/membership_entity.dart
View file @
84b2723
...
...
@@ -65,6 +65,8 @@ class MembershipDataGoodsList {
int
?
id
;
@JSONField
(
name:
"membership_id"
)
String
?
membershipId
;
@JSONField
(
name:
"iap_id"
)
String
?
iapId
;
String
?
name
;
String
?
price
;
@JSONField
(
name:
"line_price"
)
...
...
lib/membership/page/membership_page.dart
View file @
84b2723
...
...
@@ -54,6 +54,7 @@ class MembershipPageState extends BaseState<MembershipPage> with WidgetsBindingO
setState
(()
{});
});
if
(
SpUtil
.
containsKey
(
Constant
.
userToken
)!)
{
showLoading
();
Provider
.
of
<
MembershipViewProvider
>(
context
,
listen:
false
).
setSelectedMembership
(
null
);
Provider
.
of
<
MembershipViewProvider
>(
context
,
listen:
false
).
fetchMembershipData
(
'0'
);
}
else
{
...
...
@@ -62,17 +63,14 @@ class MembershipPageState extends BaseState<MembershipPage> with WidgetsBindingO
}
@override
void
onFirstBuildBody
(
BuildContext
context
)
{
super
.
onFirstBuildBody
(
context
);
showLoading
();
}
@override
Widget
buildBody
(
BuildContext
context
)
{
///响应数据
apiResponse
=
Provider
.
of
<
MembershipViewProvider
>(
context
).
response
;
if
(
apiResponse
?.
status
!=
Status
.
LOADING
)
{
hideLoading
();
}
///写死背景加载会更快
var
url
=
"https://api.parlando.ink/storage/images/274d864a62d277b2a29c4db39f92d591.png"
;
return
Scaffold
(
body:
Container
(
...
...
@@ -90,10 +88,7 @@ class MembershipPageState extends BaseState<MembershipPage> with WidgetsBindingO
);
}
Widget
buildLoading
()
{
return
const
Center
(
child:
CircularProgressIndicator
());
}
///底部一个磨砂玻璃区域
Widget
buildCompleteWidget
()
{
MembershipData
?
mb
=
apiResponse
?.
data
;
return
Container
(
...
...
@@ -118,39 +113,7 @@ class MembershipPageState extends BaseState<MembershipPage> with WidgetsBindingO
);
}
Widget
initOtherEntrance
()
{
return
Row
(
mainAxisAlignment:
MainAxisAlignment
.
spaceBetween
,
mainAxisSize:
MainAxisSize
.
min
,
crossAxisAlignment:
CrossAxisAlignment
.
center
,
children:
[
TextButton
(
onPressed:
()
{},
child:
Text
(
"服务协议"
,
style:
TextStyle
(
fontSize:
14
.
px
,
color:
Colors
.
white
),
),
),
Container
(
width:
0.6
,
height:
15.0
,
color:
Colours
.
line
),
TextButton
(
onPressed:
()
{},
child:
Text
(
"隐私政策"
,
style:
TextStyle
(
fontSize:
14
.
px
,
color:
Colors
.
white
),
),
),
Container
(
width:
0.6
,
height:
15.0
,
color:
Colours
.
line
),
TextButton
(
onPressed:
()
{},
child:
Text
(
"恢复购买"
,
style:
TextStyle
(
fontSize:
14
.
px
,
color:
Colors
.
white
),
),
),
],
);
}
///会员内容区域
buildMemberContent
(
MembershipData
?
mb
)
{
return
Column
(
crossAxisAlignment:
CrossAxisAlignment
.
center
,
...
...
@@ -166,6 +129,7 @@ class MembershipPageState extends BaseState<MembershipPage> with WidgetsBindingO
);
}
///返回行为
initBackBar
()
{
return
Container
(
alignment:
Alignment
.
centerLeft
,
...
...
@@ -178,23 +142,19 @@ class MembershipPageState extends BaseState<MembershipPage> with WidgetsBindingO
);
}
///购买项列表
buildProductWidget
(
MembershipData
?
mb
)
{
var
widgets
=
mb
?.
goodsList
?.
map
((
e
)
=>
build
Product
Item
(
e
)).
toList
()
??
[];
var
widgets
=
mb
?.
goodsList
?.
map
((
e
)
=>
build
Buy
Item
(
e
)).
toList
()
??
[];
return
Column
(
children:
widgets
);
}
Widget
buildProductItem
(
MembershipDataGoodsList
e
)
{
///每一个购买项
Widget
buildBuyItem
(
MembershipDataGoodsList
e
)
{
ProductDetails
?
element
;
for
(
var
value
in
_products
)
{
if
(
value
.
id
==
e
.
membershipId
||
mapId
(
value
.
id
,
e
.
id
))
{
element
=
value
;
break
;
}
}
return
buildBuyItem
(
element
,
e
);
var
detailList
=
_products
.
where
((
value
)
=>
value
.
id
==
e
.
iapId
).
toList
();
if
(
detailList
.
isNotEmpty
)
{
element
=
detailList
.
first
;
}
Widget
buildBuyItem
(
ProductDetails
?
element
,
MembershipDataGoodsList
e
)
{
var
style
=
const
TextStyle
(
color:
Colors
.
white
);
var
button
=
Text
(
"购买"
,
style:
style
).
paddingLeftRight
(
15
).
paddingTopBottom
(
8
).
click
(()
{
showLoading
();
...
...
@@ -211,6 +171,7 @@ class MembershipPageState extends BaseState<MembershipPage> with WidgetsBindingO
).
paddingLeftRight
(
10
).
paddingTopBottom
(
5
);
}
///价格字符串,优先使用商店的本地化价格
String
buildBuyPrice
(
ProductDetails
?
element
,
MembershipDataGoodsList
e
)
{
if
(
element
==
null
)
{
return
"
${e.price}
/
${e.name}
"
;
...
...
@@ -218,13 +179,38 @@ class MembershipPageState extends BaseState<MembershipPage> with WidgetsBindingO
return
"
${element.price}
/
${e.name}
"
;
}
bool
mapId
(
String
?
id
,
int
?
membershipId
)
{
bool
year
=
id
==
'yearly_yiyan_vip'
&&
membershipId
==
4
;
bool
month
=
id
==
'monthly_yiyan_vip'
&&
membershipId
==
3
;
if
(
year
||
month
)
{
print
(
"
$id
----
$membershipId
"
);
}
return
year
||
month
;
///其他入口区域
Widget
initOtherEntrance
()
{
return
Row
(
mainAxisAlignment:
MainAxisAlignment
.
spaceBetween
,
mainAxisSize:
MainAxisSize
.
min
,
crossAxisAlignment:
CrossAxisAlignment
.
center
,
children:
[
TextButton
(
onPressed:
()
{},
child:
Text
(
"服务协议"
,
style:
TextStyle
(
fontSize:
14
.
px
,
color:
Colors
.
white
),
),
),
Container
(
width:
0.6
,
height:
15.0
,
color:
Colours
.
line
),
TextButton
(
onPressed:
()
{},
child:
Text
(
"隐私政策"
,
style:
TextStyle
(
fontSize:
14
.
px
,
color:
Colors
.
white
),
),
),
Container
(
width:
0.6
,
height:
15.0
,
color:
Colours
.
line
),
TextButton
(
onPressed:
()
{},
child:
Text
(
"恢复购买"
,
style:
TextStyle
(
fontSize:
14
.
px
,
color:
Colors
.
white
),
),
),
],
);
}
@override
...
...
Please
register
or
login
to post a comment