Showing
2 changed files
with
153 additions
and
5 deletions
1 | +import 'dart:ui'; | ||
2 | + | ||
1 | import 'package:flutter/material.dart'; | 3 | import 'package:flutter/material.dart'; |
4 | +import 'package:one_poem/res/resources.dart'; | ||
2 | import 'package:one_poem/routers/fluro_navigator.dart'; | 5 | import 'package:one_poem/routers/fluro_navigator.dart'; |
3 | import 'package:one_poem/extension/int_extension.dart'; | 6 | import 'package:one_poem/extension/int_extension.dart'; |
7 | +import 'package:one_poem/util/toast_utils.dart'; | ||
4 | 8 | ||
5 | class MembershipPage extends StatefulWidget { | 9 | class MembershipPage extends StatefulWidget { |
6 | const MembershipPage({Key? key}) : super(key: key); | 10 | const MembershipPage({Key? key}) : super(key: key); |
... | @@ -44,10 +48,113 @@ class _MembershipPageState extends State<MembershipPage> | ... | @@ -44,10 +48,113 @@ class _MembershipPageState extends State<MembershipPage> |
44 | ), | 48 | ), |
45 | ), | 49 | ), |
46 | ), | 50 | ), |
47 | - const Text( | 51 | + const Spacer(), |
48 | - "这是会员页面", | 52 | + Container( |
49 | - style: TextStyle( | 53 | + margin: |
50 | - color: Colors.white, | 54 | + EdgeInsets.symmetric(vertical: 60.px, horizontal: 20.px), |
55 | + height: MediaQuery.of(context).size.height / 2, | ||
56 | + width: double.infinity, | ||
57 | + decoration: BoxDecoration( | ||
58 | + color: Colors.grey.shade200.withOpacity(0.1), | ||
59 | + border: Border.all( | ||
60 | + color: Colors.grey.shade50, | ||
61 | + width: 0.5, | ||
62 | + ), // 边色与边宽度 | ||
63 | + ), | ||
64 | + child: ClipRect( | ||
65 | + child: BackdropFilter( | ||
66 | + filter: ImageFilter.blur( | ||
67 | + sigmaX: 10.0, | ||
68 | + sigmaY: 10.0, | ||
69 | + ), | ||
70 | + child: Container( | ||
71 | + decoration: BoxDecoration( | ||
72 | + color: Colors.grey.shade200.withOpacity(0.1), | ||
73 | + ), | ||
74 | + child: Padding( | ||
75 | + padding: EdgeInsets.all(10.px), | ||
76 | + child: Column( | ||
77 | + crossAxisAlignment: CrossAxisAlignment.center, | ||
78 | + children: [ | ||
79 | + Text( | ||
80 | + "成为一言会员,将可以享受会员专属临境体验。", | ||
81 | + style: TextStyle( | ||
82 | + fontSize: 18.px, | ||
83 | + color: Colors.white, | ||
84 | + ), | ||
85 | + ), | ||
86 | + Gaps.vGap24, | ||
87 | + // TODO 如果会员则显示会员详情 | ||
88 | + Expanded( | ||
89 | + child: ListView.builder( | ||
90 | + itemExtent: 48.0, | ||
91 | + itemBuilder: (_, index) { | ||
92 | + return _buildItem(index); | ||
93 | + }, | ||
94 | + itemCount: 5, | ||
95 | + ), | ||
96 | + ), | ||
97 | + Gaps.vGap24, | ||
98 | + Text( | ||
99 | + "遇到任何问题,请在微信中关注“一言临境”公众号", | ||
100 | + style: TextStyle( | ||
101 | + fontSize: 14.px, | ||
102 | + color: Colors.white, | ||
103 | + ), | ||
104 | + ), | ||
105 | + Gaps.vGap10, | ||
106 | + Row( | ||
107 | + mainAxisAlignment: MainAxisAlignment.spaceBetween, | ||
108 | + mainAxisSize: MainAxisSize.min, | ||
109 | + crossAxisAlignment: CrossAxisAlignment.center, | ||
110 | + children: [ | ||
111 | + TextButton( | ||
112 | + onPressed: () {}, | ||
113 | + child: Text( | ||
114 | + "服务协议", | ||
115 | + style: TextStyle( | ||
116 | + fontSize: 14.px, | ||
117 | + color: Colors.white, | ||
118 | + ), | ||
119 | + ), | ||
120 | + ), | ||
121 | + Container( | ||
122 | + width: 0.6, | ||
123 | + height: 15.0, | ||
124 | + color: Colours.line, | ||
125 | + ), | ||
126 | + TextButton( | ||
127 | + onPressed: () {}, | ||
128 | + child: Text( | ||
129 | + "隐私政策", | ||
130 | + style: TextStyle( | ||
131 | + fontSize: 14.px, | ||
132 | + color: Colors.white, | ||
133 | + ), | ||
134 | + ), | ||
135 | + ), | ||
136 | + Container( | ||
137 | + width: 0.6, | ||
138 | + height: 15.0, | ||
139 | + color: Colours.line, | ||
140 | + ), | ||
141 | + TextButton( | ||
142 | + onPressed: () {}, | ||
143 | + child: Text( | ||
144 | + "恢复购买", | ||
145 | + style: TextStyle( | ||
146 | + fontSize: 14.px, | ||
147 | + color: Colors.white, | ||
148 | + ), | ||
149 | + ), | ||
150 | + ), | ||
151 | + ], | ||
152 | + ), | ||
153 | + ], | ||
154 | + ), | ||
155 | + ), | ||
156 | + ), | ||
157 | + ), | ||
51 | ), | 158 | ), |
52 | ), | 159 | ), |
53 | ], | 160 | ], |
... | @@ -57,6 +164,45 @@ class _MembershipPageState extends State<MembershipPage> | ... | @@ -57,6 +164,45 @@ class _MembershipPageState extends State<MembershipPage> |
57 | ); | 164 | ); |
58 | } | 165 | } |
59 | 166 | ||
167 | + Widget _buildItem(int index) { | ||
168 | + return Flex( | ||
169 | + direction: Axis.horizontal, | ||
170 | + children: [ | ||
171 | + const Text( | ||
172 | + "一个月", | ||
173 | + style: TextStyle( | ||
174 | + color: Colors.white, | ||
175 | + fontSize: 15.0, | ||
176 | + ), | ||
177 | + ), | ||
178 | + Gaps.hGap10, | ||
179 | + const Expanded( | ||
180 | + flex: 1, | ||
181 | + child: Align( | ||
182 | + alignment: Alignment.centerRight, | ||
183 | + child: Text( | ||
184 | + "99¥", | ||
185 | + style: TextStyle( | ||
186 | + color: Colors.white, | ||
187 | + fontSize: 15.0, | ||
188 | + ), | ||
189 | + ), | ||
190 | + ), | ||
191 | + ), | ||
192 | + Gaps.hGap32, | ||
193 | + ElevatedButton( | ||
194 | + child: const Text( | ||
195 | + "开通", | ||
196 | + style: TextStyle(color: Colors.white, fontSize: 15.0), | ||
197 | + ), | ||
198 | + onPressed: () { | ||
199 | + Toast.show("开通啦!"); | ||
200 | + }, | ||
201 | + ), | ||
202 | + ], | ||
203 | + ); | ||
204 | + } | ||
205 | + | ||
60 | @override | 206 | @override |
61 | void didChangeAppLifecycleState(AppLifecycleState state) {} | 207 | void didChangeAppLifecycleState(AppLifecycleState state) {} |
62 | 208 | ... | ... |
... | @@ -318,7 +318,9 @@ class _AudioToolBarState extends State<AudioToolBar> { | ... | @@ -318,7 +318,9 @@ class _AudioToolBarState extends State<AudioToolBar> { |
318 | void stopPlayer() { | 318 | void stopPlayer() { |
319 | if (_mPlayerIsInited && _mPlaybackReady && _mRecorder!.isStopped) { | 319 | if (_mPlayerIsInited && _mPlaybackReady && _mRecorder!.isStopped) { |
320 | _mPlayer!.stopPlayer().then((value) { | 320 | _mPlayer!.stopPlayer().then((value) { |
321 | - setState(() {}); | 321 | + setState(() { |
322 | + _mPlayerIsPlaying = false; | ||
323 | + }); | ||
322 | }); | 324 | }); |
323 | } | 325 | } |
324 | } | 326 | } | ... | ... |
-
Please register or login to post a comment