Showing
9 changed files
with
52 additions
and
29 deletions
| 1 | <manifest xmlns:android="http://schemas.android.com/apk/res/android" | 1 | <manifest xmlns:android="http://schemas.android.com/apk/res/android" |
| 2 | package="com.mofunsky.one_poem"> | 2 | package="com.mofunsky.one_poem"> |
| 3 | <application | 3 | <application |
| 4 | - android:label="one_poem" | 4 | + android:label="一言" |
| 5 | android:icon="@mipmap/ic_launcher"> | 5 | android:icon="@mipmap/ic_launcher"> |
| 6 | <activity | 6 | <activity |
| 7 | android:name=".MainActivity" | 7 | android:name=".MainActivity" | ... | ... |
| ... | @@ -10,7 +10,9 @@ class AccountRouter implements IRouterProvider{ | ... | @@ -10,7 +10,9 @@ class AccountRouter implements IRouterProvider{ |
| 10 | 10 | ||
| 11 | @override | 11 | @override |
| 12 | void initRouter(FluroRouter router) { | 12 | void initRouter(FluroRouter router) { |
| 13 | - router.define(accountPage, handler: Handler(handlerFunc: (_, __) => const AccountPage())); | 13 | + router.define(accountPage, handler: Handler(handlerFunc: (_, __) { |
| 14 | + return const AccountPage(isSelfPage: true,); | ||
| 15 | + })); | ||
| 14 | } | 16 | } |
| 15 | 17 | ||
| 16 | } | 18 | } | ... | ... |
This diff is collapsed. Click to expand it.
| 1 | import 'package:flutter/material.dart'; | 1 | import 'package:flutter/material.dart'; |
| 2 | +import 'package:one_poem/account/page/account_page.dart'; | ||
| 2 | import 'package:one_poem/goods/page/goods_page.dart'; | 3 | import 'package:one_poem/goods/page/goods_page.dart'; |
| 3 | import 'package:one_poem/poem/page/poem_page.dart'; | 4 | import 'package:one_poem/poem/page/poem_page.dart'; |
| 4 | import 'package:one_poem/res/resources.dart'; | 5 | import 'package:one_poem/res/resources.dart'; |
| ... | @@ -45,7 +46,7 @@ class _HomeState extends State<Home> with RestorationMixin { | ... | @@ -45,7 +46,7 @@ class _HomeState extends State<Home> with RestorationMixin { |
| 45 | const PoemPage(), | 46 | const PoemPage(), |
| 46 | const GoodsPage(), | 47 | const GoodsPage(), |
| 47 | const NotFoundPage(), | 48 | const NotFoundPage(), |
| 48 | - const ShopPage(), | 49 | + const AccountPage(), |
| 49 | ]; | 50 | ]; |
| 50 | } | 51 | } |
| 51 | 52 | ... | ... |
| ... | @@ -46,13 +46,18 @@ Future<void> main() async { | ... | @@ -46,13 +46,18 @@ Future<void> main() async { |
| 46 | /// sp初始化 | 46 | /// sp初始化 |
| 47 | await SpUtil.getInstance(); | 47 | await SpUtil.getInstance(); |
| 48 | 48 | ||
| 49 | + WidgetsFlutterBinding.ensureInitialized(); | ||
| 50 | + SystemChrome.setPreferredOrientations( | ||
| 51 | + [DeviceOrientation.portraitUp, DeviceOrientation.portraitDown]); | ||
| 52 | + | ||
| 49 | /// 1.22 预览功能: 在输入频率与显示刷新率不匹配情况下提供平滑的滚动效果 | 53 | /// 1.22 预览功能: 在输入频率与显示刷新率不匹配情况下提供平滑的滚动效果 |
| 50 | // GestureBinding.instance?.resamplingEnabled = true; | 54 | // GestureBinding.instance?.resamplingEnabled = true; |
| 51 | /// 异常处理 | 55 | /// 异常处理 |
| 52 | handleError(() => runApp(MyApp())); | 56 | handleError(() => runApp(MyApp())); |
| 53 | 57 | ||
| 54 | /// 隐藏状态栏。为启动页、引导页设置。完成后修改回显示状态栏。 | 58 | /// 隐藏状态栏。为启动页、引导页设置。完成后修改回显示状态栏。 |
| 55 | - SystemChrome.setEnabledSystemUIMode(SystemUiMode.manual, overlays: [SystemUiOverlay.bottom]); | 59 | + SystemChrome.setEnabledSystemUIMode(SystemUiMode.manual, |
| 60 | + overlays: [SystemUiOverlay.bottom]); | ||
| 56 | // TODO(weilu): 启动体验不佳。状态栏、导航栏在冷启动开始的一瞬间为黑色,且无法通过隐藏、修改颜色等方式进行处理。。。 | 61 | // TODO(weilu): 启动体验不佳。状态栏、导航栏在冷启动开始的一瞬间为黑色,且无法通过隐藏、修改颜色等方式进行处理。。。 |
| 57 | // 相关问题跟踪:https://github.com/flutter/flutter/issues/73351 | 62 | // 相关问题跟踪:https://github.com/flutter/flutter/issues/73351 |
| 58 | } | 63 | } |
| ... | @@ -108,10 +113,7 @@ class MyApp extends StatelessWidget { | ... | @@ -108,10 +113,7 @@ class MyApp extends StatelessWidget { |
| 108 | 113 | ||
| 109 | quickActions.setShortcutItems(<ShortcutItem>[ | 114 | quickActions.setShortcutItems(<ShortcutItem>[ |
| 110 | const ShortcutItem( | 115 | const ShortcutItem( |
| 111 | - type: 'demo', | 116 | + type: 'demo', localizedTitle: 'Demo', icon: 'flutter_dash_black'), |
| 112 | - localizedTitle: 'Demo', | ||
| 113 | - icon: 'flutter_dash_black' | ||
| 114 | - ), | ||
| 115 | ]); | 117 | ]); |
| 116 | } | 118 | } |
| 117 | } | 119 | } |
| ... | @@ -124,7 +126,8 @@ class MyApp extends StatelessWidget { | ... | @@ -124,7 +126,8 @@ class MyApp extends StatelessWidget { |
| 124 | ChangeNotifierProvider(create: (_) => LocaleProvider()) | 126 | ChangeNotifierProvider(create: (_) => LocaleProvider()) |
| 125 | ], | 127 | ], |
| 126 | child: Consumer2<ThemeProvider, LocaleProvider>( | 128 | child: Consumer2<ThemeProvider, LocaleProvider>( |
| 127 | - builder: (_, ThemeProvider provider, LocaleProvider localeProvider, __) { | 129 | + builder: |
| 130 | + (_, ThemeProvider provider, LocaleProvider localeProvider, __) { | ||
| 128 | return _buildMaterialApp(provider, localeProvider); | 131 | return _buildMaterialApp(provider, localeProvider); |
| 129 | }, | 132 | }, |
| 130 | ), | 133 | ), |
| ... | @@ -133,14 +136,15 @@ class MyApp extends StatelessWidget { | ... | @@ -133,14 +136,15 @@ class MyApp extends StatelessWidget { |
| 133 | /// Toast 配置 | 136 | /// Toast 配置 |
| 134 | return OKToast( | 137 | return OKToast( |
| 135 | backgroundColor: Colors.black54, | 138 | backgroundColor: Colors.black54, |
| 136 | - textPadding: const EdgeInsets.symmetric(horizontal: 16.0, vertical: 10.0), | 139 | + textPadding: |
| 140 | + const EdgeInsets.symmetric(horizontal: 16.0, vertical: 10.0), | ||
| 137 | radius: 20.0, | 141 | radius: 20.0, |
| 138 | position: ToastPosition.bottom, | 142 | position: ToastPosition.bottom, |
| 139 | - child: app | 143 | + child: app); |
| 140 | - ); | ||
| 141 | } | 144 | } |
| 142 | 145 | ||
| 143 | - Widget _buildMaterialApp(ThemeProvider provider, LocaleProvider localeProvider) { | 146 | + Widget _buildMaterialApp( |
| 147 | + ThemeProvider provider, LocaleProvider localeProvider) { | ||
| 144 | return MaterialApp( | 148 | return MaterialApp( |
| 145 | title: 'Flutter Deer', | 149 | title: 'Flutter Deer', |
| 146 | // showPerformanceOverlay: true, //显示性能标签 | 150 | // showPerformanceOverlay: true, //显示性能标签 | ... | ... |
| 1 | import 'package:flutter/material.dart'; | 1 | import 'package:flutter/material.dart'; |
| 2 | +import 'package:one_poem/tiktok/style/style.dart'; | ||
| 2 | import 'package:one_poem/widgets/my_app_bar.dart'; | 3 | import 'package:one_poem/widgets/my_app_bar.dart'; |
| 3 | 4 | ||
| 4 | class PoemDetailPage extends StatefulWidget { | 5 | class PoemDetailPage extends StatefulWidget { |
| 5 | 6 | ||
| 6 | const PoemDetailPage({ | 7 | const PoemDetailPage({ |
| 7 | Key? key, | 8 | Key? key, |
| 8 | - this.isAccessibilityTest = false, | 9 | + this.onPop, |
| 10 | + required this.poemId, | ||
| 9 | }) : super(key : key); | 11 | }) : super(key : key); |
| 10 | 12 | ||
| 11 | - final bool isAccessibilityTest; | 13 | + final int poemId; |
| 14 | + final Function? onPop; | ||
| 12 | 15 | ||
| 13 | @override | 16 | @override |
| 14 | _PoemDetailPageState createState() => _PoemDetailPageState(); | 17 | _PoemDetailPageState createState() => _PoemDetailPageState(); |
| ... | @@ -17,11 +20,27 @@ class PoemDetailPage extends StatefulWidget { | ... | @@ -17,11 +20,27 @@ class PoemDetailPage extends StatefulWidget { |
| 17 | class _PoemDetailPageState extends State<PoemDetailPage>{ | 20 | class _PoemDetailPageState extends State<PoemDetailPage>{ |
| 18 | @override | 21 | @override |
| 19 | Widget build(BuildContext context) { | 22 | Widget build(BuildContext context) { |
| 20 | - return const Scaffold( | 23 | + return Scaffold( |
| 21 | - appBar: MyAppBar( | 24 | + appBar: const MyAppBar( |
| 22 | - title: '一言|译解|临境', | 25 | + title: '一言', |
| 26 | + ), | ||
| 27 | + body: Container( | ||
| 28 | + decoration: const BoxDecoration( | ||
| 29 | + gradient: LinearGradient( | ||
| 30 | + begin: Alignment.topCenter, | ||
| 31 | + colors: <Color>[ | ||
| 32 | + Colors.black, | ||
| 33 | + Colors.black, | ||
| 34 | + ], | ||
| 35 | + ), | ||
| 36 | + ), | ||
| 37 | + child: Stack( | ||
| 38 | + alignment: Alignment.topCenter, | ||
| 39 | + children: <Widget>[ | ||
| 40 | + Text("题 破山寺后禅院"), | ||
| 41 | + ], | ||
| 42 | + ), | ||
| 23 | ), | 43 | ), |
| 24 | - body: Text("题 破山此后禅院"), | ||
| 25 | ); | 44 | ); |
| 26 | } | 45 | } |
| 27 | } | 46 | } |
| ... | \ No newline at end of file | ... | \ No newline at end of file | ... | ... |
| ... | @@ -13,6 +13,8 @@ import 'package:one_poem/tiktok/widgets/tiktok_video_button_column.dart'; | ... | @@ -13,6 +13,8 @@ import 'package:one_poem/tiktok/widgets/tiktok_video_button_column.dart'; |
| 13 | import 'package:one_poem/tiktok/widgets/tiktok_video_poem.dart'; | 13 | import 'package:one_poem/tiktok/widgets/tiktok_video_poem.dart'; |
| 14 | import 'package:video_player/video_player.dart'; | 14 | import 'package:video_player/video_player.dart'; |
| 15 | 15 | ||
| 16 | +import 'poem_detail.dart'; | ||
| 17 | + | ||
| 16 | class PoemPage extends StatefulWidget { | 18 | class PoemPage extends StatefulWidget { |
| 17 | const PoemPage({Key? key}) : super(key: key); | 19 | const PoemPage({Key? key}) : super(key: key); |
| 18 | 20 | ||
| ... | @@ -100,12 +102,10 @@ class _PoemPageState extends State<PoemPage> with WidgetsBindingObserver { | ... | @@ -100,12 +102,10 @@ class _PoemPageState extends State<PoemPage> with WidgetsBindingObserver { |
| 100 | }, | 102 | }, |
| 101 | ); | 103 | ); |
| 102 | 104 | ||
| 103 | - var userPage = UserPage( | 105 | + var detailPage = PoemDetailPage( |
| 104 | - isSelfPage: false, | 106 | + onPop: (){ |
| 105 | - canPop: true, | ||
| 106 | - onPop: () { | ||
| 107 | tkController.animateToMiddle(); | 107 | tkController.animateToMiddle(); |
| 108 | - }, | 108 | + }, poemId: 1, |
| 109 | ); | 109 | ); |
| 110 | var searchPage = SearchPage( | 110 | var searchPage = SearchPage( |
| 111 | onPop: tkController.animateToMiddle, | 111 | onPop: tkController.animateToMiddle, |
| ... | @@ -116,7 +116,7 @@ class _PoemPageState extends State<PoemPage> with WidgetsBindingObserver { | ... | @@ -116,7 +116,7 @@ class _PoemPageState extends State<PoemPage> with WidgetsBindingObserver { |
| 116 | controller: tkController, | 116 | controller: tkController, |
| 117 | header: header, | 117 | header: header, |
| 118 | leftPage: searchPage, | 118 | leftPage: searchPage, |
| 119 | - rightPage: userPage, | 119 | + rightPage: detailPage, |
| 120 | enableGesture: true, | 120 | enableGesture: true, |
| 121 | page: Stack( | 121 | page: Stack( |
| 122 | children: <Widget>[ | 122 | children: <Widget>[ | ... | ... |
| 1 | import 'package:fluro/fluro.dart'; | 1 | import 'package:fluro/fluro.dart'; |
| 2 | import 'package:one_poem/routers/i_router.dart'; | 2 | import 'package:one_poem/routers/i_router.dart'; |
| 3 | 3 | ||
| 4 | -import 'page/poem_detail.dart'; | ||
| 5 | import 'page/poem_page.dart'; | 4 | import 'page/poem_page.dart'; |
| 6 | 5 | ||
| 7 | class PoemRouter implements IRouterProvider{ | 6 | class PoemRouter implements IRouterProvider{ |
| 8 | 7 | ||
| 9 | static String poemPage = '/poem'; | 8 | static String poemPage = '/poem'; |
| 10 | - static String poemDetail = '/poem/detail'; | ||
| 11 | 9 | ||
| 12 | @override | 10 | @override |
| 13 | void initRouter(FluroRouter router) { | 11 | void initRouter(FluroRouter router) { |
| 14 | router.define(poemPage, handler: Handler(handlerFunc: (_, __) => const PoemPage())); | 12 | router.define(poemPage, handler: Handler(handlerFunc: (_, __) => const PoemPage())); |
| 15 | - router.define(poemDetail, handler: Handler(handlerFunc: (_, __) => const PoemDetailPage())); | ||
| 16 | } | 13 | } |
| 17 | 14 | ||
| 18 | } | 15 | } | ... | ... |
| ... | @@ -13,7 +13,7 @@ class UserPage extends StatefulWidget { | ... | @@ -13,7 +13,7 @@ class UserPage extends StatefulWidget { |
| 13 | Key? key, | 13 | Key? key, |
| 14 | this.canPop = false, | 14 | this.canPop = false, |
| 15 | this.onPop, | 15 | this.onPop, |
| 16 | - required this.isSelfPage, | 16 | + this.isSelfPage = false, |
| 17 | this.onSwitch, | 17 | this.onSwitch, |
| 18 | }) : super(key: key); | 18 | }) : super(key: key); |
| 19 | 19 | ... | ... |
-
Please register or login to post a comment