Showing
8 changed files
with
116 additions
and
20 deletions
assets/images/membership/membership_bg.png
0 → 100644

747 KB
1 | import 'package:flutter/material.dart'; | 1 | import 'package:flutter/material.dart'; |
2 | +import 'package:one_poem/membership/membership_router.dart'; | ||
2 | import 'package:one_poem/poem/poem_router.dart'; | 3 | import 'package:one_poem/poem/poem_router.dart'; |
3 | import 'package:one_poem/routers/fluro_navigator.dart'; | 4 | import 'package:one_poem/routers/fluro_navigator.dart'; |
4 | import 'package:one_poem/setting/setting_router.dart'; | 5 | import 'package:one_poem/setting/setting_router.dart'; |
... | @@ -36,17 +37,15 @@ class _AccountPageState extends State<AccountPage> { | ... | @@ -36,17 +37,15 @@ class _AccountPageState extends State<AccountPage> { |
36 | child: Row( | 37 | child: Row( |
37 | crossAxisAlignment: CrossAxisAlignment.start, | 38 | crossAxisAlignment: CrossAxisAlignment.start, |
38 | mainAxisAlignment: MainAxisAlignment.end, | 39 | mainAxisAlignment: MainAxisAlignment.end, |
39 | - children: const <Widget>[ | 40 | + children: <Widget>[ |
40 | Tapped( | 41 | Tapped( |
41 | - child: _MembershipButton( | 42 | + onTap: () { |
43 | + NavigatorUtils.push(context, MembershipRouter.membershipPage); | ||
44 | + }, | ||
45 | + child: const _MembershipButton( | ||
42 | title: '会员中心', | 46 | title: '会员中心', |
43 | ), | 47 | ), |
44 | ), | 48 | ), |
45 | - Tapped( | ||
46 | - child: _UserRightButton( | ||
47 | - title: '钱包', | ||
48 | - ), | ||
49 | - ), | ||
50 | ], | 49 | ], |
51 | ), | 50 | ), |
52 | ); | 51 | ); |
... | @@ -93,11 +92,11 @@ class _AccountPageState extends State<AccountPage> { | ... | @@ -93,11 +92,11 @@ class _AccountPageState extends State<AccountPage> { |
93 | child: GestureDetector( | 92 | child: GestureDetector( |
94 | child: CircleAvatar( | 93 | child: CircleAvatar( |
95 | backgroundColor: Colors.red.withOpacity(0.4), | 94 | backgroundColor: Colors.red.withOpacity(0.4), |
96 | - radius: 14.0, | 95 | + radius: 14.px, |
97 | - child: const Icon( | 96 | + child: Icon( |
98 | Icons.edit, | 97 | Icons.edit, |
99 | color: Colors.white, | 98 | color: Colors.white, |
100 | - size: 16.0, | 99 | + size: 16.px, |
101 | ), | 100 | ), |
102 | ), | 101 | ), |
103 | onTap: () { | 102 | onTap: () { |
... | @@ -239,10 +238,10 @@ class _MembershipButton extends StatelessWidget { | ... | @@ -239,10 +238,10 @@ class _MembershipButton extends StatelessWidget { |
239 | alignment: Alignment.center, | 238 | alignment: Alignment.center, |
240 | child: Text( | 239 | child: Text( |
241 | title, | 240 | title, |
242 | - style: TextStyle(color: ColorPlate.red.withOpacity(0.4)), | 241 | + style: const TextStyle(color: ColorPlate.orange), |
243 | ), | 242 | ), |
244 | decoration: BoxDecoration( | 243 | decoration: BoxDecoration( |
245 | - border: Border.all(color: ColorPlate.red.withOpacity(.4)), | 244 | + border: Border.all(color: ColorPlate.orange), |
246 | borderRadius: BorderRadius.circular(4.px), | 245 | borderRadius: BorderRadius.circular(4.px), |
247 | ), | 246 | ), |
248 | ); | 247 | ); | ... | ... |
... | @@ -41,7 +41,8 @@ class _SplashPageState extends State<SplashPage> { | ... | @@ -41,7 +41,8 @@ class _SplashPageState extends State<SplashPage> { |
41 | void _precacheImage(String image) { | 41 | void _precacheImage(String image) { |
42 | precacheImage( | 42 | precacheImage( |
43 | ImageUtils.getAssetImage(image, format: ImageFormat.png), | 43 | ImageUtils.getAssetImage(image, format: ImageFormat.png), |
44 | - context); | 44 | + context, |
45 | + ); | ||
45 | } | 46 | } |
46 | 47 | ||
47 | _guideList.forEach(_precacheImage); | 48 | _guideList.forEach(_precacheImage); |
... | @@ -102,7 +103,8 @@ class _SplashPageState extends State<SplashPage> { | ... | @@ -102,7 +103,8 @@ class _SplashPageState extends State<SplashPage> { |
102 | widthFactor: 0.33, | 103 | widthFactor: 0.33, |
103 | leftFactor: 0.33, | 104 | leftFactor: 0.33, |
104 | bottomFactor: 0, | 105 | bottomFactor: 0, |
105 | - child: LoadAssetImage('logo')) | 106 | + child: LoadAssetImage('logo'), |
107 | + ) | ||
106 | : Swiper( | 108 | : Swiper( |
107 | key: const Key('swiper'), | 109 | key: const Key('swiper'), |
108 | itemCount: _guideList.length, | 110 | itemCount: _guideList.length, |
... | @@ -122,6 +124,7 @@ class _SplashPageState extends State<SplashPage> { | ... | @@ -122,6 +124,7 @@ class _SplashPageState extends State<SplashPage> { |
122 | _goLogin(); | 124 | _goLogin(); |
123 | } | 125 | } |
124 | }, | 126 | }, |
125 | - )); | 127 | + ), |
128 | + ); | ||
126 | } | 129 | } |
127 | } | 130 | } | ... | ... |
lib/membership/membership_router.dart
0 → 100644
1 | +import 'package:fluro/fluro.dart'; | ||
2 | +import 'package:one_poem/routers/i_router.dart'; | ||
3 | + | ||
4 | +import 'page/membership_page.dart'; | ||
5 | + | ||
6 | +class MembershipRouter implements IRouterProvider { | ||
7 | + static String membershipPage = '/membership'; | ||
8 | + | ||
9 | + @override | ||
10 | + void initRouter(FluroRouter router) { | ||
11 | + router.define( | ||
12 | + membershipPage, | ||
13 | + handler: Handler( | ||
14 | + handlerFunc: (_, __) => const MembershipPage(), | ||
15 | + ), | ||
16 | + ); | ||
17 | + } | ||
18 | +} |
lib/membership/page/membership_page.dart
0 → 100644
1 | +import 'package:flutter/material.dart'; | ||
2 | +import 'package:one_poem/routers/fluro_navigator.dart'; | ||
3 | +import 'package:one_poem/extension/int_extension.dart'; | ||
4 | + | ||
5 | +class MembershipPage extends StatefulWidget { | ||
6 | + const MembershipPage({Key? key}) : super(key: key); | ||
7 | + | ||
8 | + @override | ||
9 | + _MembershipPageState createState() => _MembershipPageState(); | ||
10 | +} | ||
11 | + | ||
12 | +class _MembershipPageState extends State<MembershipPage> | ||
13 | + with WidgetsBindingObserver { | ||
14 | + @override | ||
15 | + void initState() { | ||
16 | + super.initState(); | ||
17 | + } | ||
18 | + | ||
19 | + @override | ||
20 | + Widget build(BuildContext context) { | ||
21 | + return SafeArea( | ||
22 | + child: Scaffold( | ||
23 | + backgroundColor: Colors.black, | ||
24 | + body: Container( | ||
25 | + alignment: Alignment.topCenter, | ||
26 | + decoration: const BoxDecoration( | ||
27 | + image: DecorationImage( | ||
28 | + image: AssetImage("assets/images/membership/membership_bg.png"), | ||
29 | + fit: BoxFit.fill, | ||
30 | + ), | ||
31 | + ), | ||
32 | + child: Column( | ||
33 | + crossAxisAlignment: CrossAxisAlignment.center, | ||
34 | + children: [ | ||
35 | + Container( | ||
36 | + alignment: Alignment.centerLeft, | ||
37 | + child: IconButton( | ||
38 | + onPressed: () { | ||
39 | + NavigatorUtils.goBack(context); | ||
40 | + }, | ||
41 | + icon: const Icon( | ||
42 | + Icons.arrow_back_ios, | ||
43 | + color: Colors.white, | ||
44 | + ), | ||
45 | + ), | ||
46 | + ), | ||
47 | + const Text( | ||
48 | + "这是会员页面", | ||
49 | + style: TextStyle( | ||
50 | + color: Colors.white, | ||
51 | + ), | ||
52 | + ), | ||
53 | + ], | ||
54 | + ), | ||
55 | + ), | ||
56 | + ), | ||
57 | + ); | ||
58 | + } | ||
59 | + | ||
60 | + @override | ||
61 | + void didChangeAppLifecycleState(AppLifecycleState state) {} | ||
62 | + | ||
63 | + @override | ||
64 | + void dispose() { | ||
65 | + super.dispose(); | ||
66 | + } | ||
67 | +} |
... | @@ -90,7 +90,9 @@ class _PoemDetailPageState extends State<PoemDetailPage> { | ... | @@ -90,7 +90,9 @@ class _PoemDetailPageState extends State<PoemDetailPage> { |
90 | decoration: BoxDecoration( | 90 | decoration: BoxDecoration( |
91 | color: Colors.grey.shade200.withOpacity(0.1), | 91 | color: Colors.grey.shade200.withOpacity(0.1), |
92 | border: Border.all( | 92 | border: Border.all( |
93 | - color: Colors.grey.shade50, width: 0.5), // 边色与边宽度 | 93 | + color: Colors.grey.shade50, |
94 | + width: 0.5, | ||
95 | + ), // 边色与边宽度 | ||
94 | ), | 96 | ), |
95 | child: ClipRect( | 97 | child: ClipRect( |
96 | child: BackdropFilter( | 98 | child: BackdropFilter( | ... | ... |
... | @@ -3,6 +3,7 @@ import 'package:flutter/material.dart'; | ... | @@ -3,6 +3,7 @@ import 'package:flutter/material.dart'; |
3 | import 'package:one_poem/account/account_router.dart'; | 3 | import 'package:one_poem/account/account_router.dart'; |
4 | import 'package:one_poem/category/category_router.dart'; | 4 | import 'package:one_poem/category/category_router.dart'; |
5 | import 'package:one_poem/category/page/categories_page.dart'; | 5 | import 'package:one_poem/category/page/categories_page.dart'; |
6 | +import 'package:one_poem/membership/membership_router.dart'; | ||
6 | import 'package:one_poem/timeline/timeline_router.dart'; | 7 | import 'package:one_poem/timeline/timeline_router.dart'; |
7 | import 'package:one_poem/home/home_page.dart'; | 8 | import 'package:one_poem/home/home_page.dart'; |
8 | import 'package:one_poem/home/webview_page.dart'; | 9 | import 'package:one_poem/home/webview_page.dart'; |
... | @@ -14,7 +15,6 @@ import 'i_router.dart'; | ... | @@ -14,7 +15,6 @@ import 'i_router.dart'; |
14 | import 'not_found_page.dart'; | 15 | import 'not_found_page.dart'; |
15 | 16 | ||
16 | class Routes { | 17 | class Routes { |
17 | - | ||
18 | static String home = '/home'; | 18 | static String home = '/home'; |
19 | static String webViewPage = '/webView'; | 19 | static String webViewPage = '/webView'; |
20 | 20 | ||
... | @@ -30,8 +30,11 @@ class Routes { | ... | @@ -30,8 +30,11 @@ class Routes { |
30 | return const NotFoundPage(); | 30 | return const NotFoundPage(); |
31 | }); | 31 | }); |
32 | 32 | ||
33 | - router.define(home, handler: Handler( | 33 | + router.define(home, |
34 | - handlerFunc: (BuildContext? context, Map<String, List<String>> params) => const Home())); | 34 | + handler: Handler( |
35 | + handlerFunc: | ||
36 | + (BuildContext? context, Map<String, List<String>> params) => | ||
37 | + const Home())); | ||
35 | 38 | ||
36 | router.define(webViewPage, handler: Handler(handlerFunc: (_, params) { | 39 | router.define(webViewPage, handler: Handler(handlerFunc: (_, params) { |
37 | final String title = params['title']?.first ?? ''; | 40 | final String title = params['title']?.first ?? ''; |
... | @@ -40,6 +43,7 @@ class Routes { | ... | @@ -40,6 +43,7 @@ class Routes { |
40 | })); | 43 | })); |
41 | 44 | ||
42 | _listRouter.clear(); | 45 | _listRouter.clear(); |
46 | + | ||
43 | /// 各自路由由各自模块管理,统一在此添加初始化 | 47 | /// 各自路由由各自模块管理,统一在此添加初始化 |
44 | _listRouter.add(LoginRouter()); | 48 | _listRouter.add(LoginRouter()); |
45 | _listRouter.add(TimelineRouter()); | 49 | _listRouter.add(TimelineRouter()); |
... | @@ -47,11 +51,13 @@ class Routes { | ... | @@ -47,11 +51,13 @@ class Routes { |
47 | _listRouter.add(AccountRouter()); | 51 | _listRouter.add(AccountRouter()); |
48 | _listRouter.add(SettingRouter()); | 52 | _listRouter.add(SettingRouter()); |
49 | _listRouter.add(CategoryRouter()); | 53 | _listRouter.add(CategoryRouter()); |
54 | + _listRouter.add(MembershipRouter()); | ||
50 | 55 | ||
51 | /// 初始化路由 | 56 | /// 初始化路由 |
52 | void initRouter(IRouterProvider routerProvider) { | 57 | void initRouter(IRouterProvider routerProvider) { |
53 | routerProvider.initRouter(router); | 58 | routerProvider.initRouter(router); |
54 | } | 59 | } |
60 | + | ||
55 | _listRouter.forEach(initRouter); | 61 | _listRouter.forEach(initRouter); |
56 | } | 62 | } |
57 | } | 63 | } | ... | ... |
... | @@ -176,12 +176,13 @@ flutter: | ... | @@ -176,12 +176,13 @@ flutter: |
176 | # For details regarding fonts from package dependencies, | 176 | # For details regarding fonts from package dependencies, |
177 | # see https://flutter.dev/custom-fonts/#from-packages | 177 | # see https://flutter.dev/custom-fonts/#from-packages |
178 | assets: | 178 | assets: |
179 | - - assets/data/ | ||
180 | - assets/images/ | 179 | - assets/images/ |
181 | - assets/images/login/ | 180 | - assets/images/login/ |
182 | - assets/images/state/ | 181 | - assets/images/state/ |
183 | - assets/images/poem/ | 182 | - assets/images/poem/ |
184 | - assets/images/category/ | 183 | - assets/images/category/ |
184 | + - assets/images/membership/ | ||
185 | + - assets/data/ | ||
185 | - assets/data/Data.json | 186 | - assets/data/Data.json |
186 | - assets/data/friends/ | 187 | - assets/data/friends/ |
187 | 188 | ... | ... |
-
Please register or login to post a comment