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