reason

增加设置页面

1 import 'package:flutter/material.dart'; 1 import 'package:flutter/material.dart';
2 import 'package:one_poem/routers/fluro_navigator.dart'; 2 import 'package:one_poem/routers/fluro_navigator.dart';
3 +import 'package:one_poem/setting/setting_router.dart';
3 import 'package:one_poem/tiktok/style/style.dart'; 4 import 'package:one_poem/tiktok/style/style.dart';
4 import 'package:tapped/tapped.dart'; 5 import 'package:tapped/tapped.dart';
5 import 'package:flutter_gen/gen_l10n/one_poem_localizations.dart'; 6 import 'package:flutter_gen/gen_l10n/one_poem_localizations.dart';
...@@ -82,8 +83,6 @@ class _AccountPageState extends State<AccountPage> { ...@@ -82,8 +83,6 @@ class _AccountPageState extends State<AccountPage> {
82 parent: AlwaysScrollableScrollPhysics(), 83 parent: AlwaysScrollableScrollPhysics(),
83 ), 84 ),
84 children: <Widget>[ 85 children: <Widget>[
85 - Container(height: 20.px),
86 - // 头像与关注
87 Stack( 86 Stack(
88 alignment: Alignment.bottomLeft, 87 alignment: Alignment.bottomLeft,
89 children: <Widget>[ 88 children: <Widget>[
...@@ -187,6 +186,7 @@ class _AccountPageState extends State<AccountPage> { ...@@ -187,6 +186,7 @@ class _AccountPageState extends State<AccountPage> {
187 child: Stack( 186 child: Stack(
188 alignment: Alignment.topCenter, 187 alignment: Alignment.topCenter,
189 children: <Widget>[ 188 children: <Widget>[
189 + body,
190 Container( 190 Container(
191 alignment: Alignment.centerRight, 191 alignment: Alignment.centerRight,
192 height: 64.px, 192 height: 64.px,
...@@ -199,12 +199,13 @@ class _AccountPageState extends State<AccountPage> { ...@@ -199,12 +199,13 @@ class _AccountPageState extends State<AccountPage> {
199 Icons.settings_outlined, 199 Icons.settings_outlined,
200 color: Colors.black54, 200 color: Colors.black54,
201 ), 201 ),
202 - onPressed: () {}, 202 + onPressed: () {
203 + NavigatorUtils.push(context, SettingRouter.settingPage);
204 + },
203 ), 205 ),
204 ], 206 ],
205 ), 207 ),
206 ), 208 ),
207 - body,
208 ], 209 ],
209 ), 210 ),
210 ), 211 ),
......
...@@ -33,7 +33,7 @@ class PoemVoiceWidget extends StatefulWidget { ...@@ -33,7 +33,7 @@ class PoemVoiceWidget extends StatefulWidget {
33 class _PoemVoiceWidgetState extends State<PoemVoiceWidget> { 33 class _PoemVoiceWidgetState extends State<PoemVoiceWidget> {
34 // 倒计时总时长 34 // 倒计时总时长
35 final int _countTotal = 12; 35 final int _countTotal = 12;
36 - double starty = 0.0; 36 + double startY = 0.0;
37 double offset = 0.0; 37 double offset = 0.0;
38 bool isUp = false; 38 bool isUp = false;
39 String textShow = "按住说话"; 39 String textShow = "按住说话";
...@@ -69,7 +69,6 @@ class _PoemVoiceWidgetState extends State<PoemVoiceWidget> { ...@@ -69,7 +69,6 @@ class _PoemVoiceWidgetState extends State<PoemVoiceWidget> {
69 recordPlugin?.response.listen((data) { 69 recordPlugin?.response.listen((data) {
70 if (data.msg == "onStop") { 70 if (data.msg == "onStop") {
71 ///结束录制时会返回录制文件的地址方便上传服务器 71 ///结束录制时会返回录制文件的地址方便上传服务器
72 - // print("onStop " + data.path!);
73 if (widget.stopRecord != null) { 72 if (widget.stopRecord != null) {
74 audioFilePath = data.path!; 73 audioFilePath = data.path!;
75 widget.stopRecord!(data.path, data.audioTimeLength); 74 widget.stopRecord!(data.path, data.audioTimeLength);
...@@ -104,8 +103,6 @@ class _PoemVoiceWidgetState extends State<PoemVoiceWidget> { ...@@ -104,8 +103,6 @@ class _PoemVoiceWidgetState extends State<PoemVoiceWidget> {
104 overlayEntry!.markNeedsBuild(); 103 overlayEntry!.markNeedsBuild();
105 } 104 }
106 }); 105 });
107 -
108 - // print("振幅大小 " + voiceData.toString() + " " + voiceIco);
109 }); 106 });
110 } 107 }
111 108
...@@ -202,7 +199,7 @@ class _PoemVoiceWidgetState extends State<PoemVoiceWidget> { ...@@ -202,7 +199,7 @@ class _PoemVoiceWidgetState extends State<PoemVoiceWidget> {
202 199
203 moveVoiceView() { 200 moveVoiceView() {
204 setState(() { 201 setState(() {
205 - isUp = starty - offset > 100 ? true : false; 202 + isUp = startY - offset > 100 ? true : false;
206 if (isUp) { 203 if (isUp) {
207 textShow = "松开手指,取消发送"; 204 textShow = "松开手指,取消发送";
208 toastShow = textShow; 205 toastShow = textShow;
...@@ -238,7 +235,7 @@ class _PoemVoiceWidgetState extends State<PoemVoiceWidget> { ...@@ -238,7 +235,7 @@ class _PoemVoiceWidgetState extends State<PoemVoiceWidget> {
238 children: [ 235 children: [
239 GestureDetector( 236 GestureDetector(
240 onLongPressStart: (details) { 237 onLongPressStart: (details) {
241 - starty = details.globalPosition.dy; 238 + startY = details.globalPosition.dy;
242 _timer = Timer.periodic(const Duration(milliseconds: 1000), (t) { 239 _timer = Timer.periodic(const Duration(milliseconds: 1000), (t) {
243 _count++; 240 _count++;
244 if (_count == _countTotal) { 241 if (_count == _countTotal) {
...@@ -257,10 +254,10 @@ class _PoemVoiceWidgetState extends State<PoemVoiceWidget> { ...@@ -257,10 +254,10 @@ class _PoemVoiceWidgetState extends State<PoemVoiceWidget> {
257 child: Container( 254 child: Container(
258 height: widget.height ?? 60, 255 height: widget.height ?? 60,
259 margin: widget.margin ?? const EdgeInsets.fromLTRB(50, 0, 50, 20), 256 margin: widget.margin ?? const EdgeInsets.fromLTRB(50, 0, 50, 20),
260 - child: const Icon( 257 + child: Icon(
261 Icons.mic_none, 258 Icons.mic_none,
262 size: 70.0, 259 size: 70.0,
263 - color: Colors.green, 260 + color: Colors.black45.withOpacity(0.6),
264 ), 261 ),
265 ), 262 ),
266 ), 263 ),
......
...@@ -6,11 +6,11 @@ import 'package:one_poem/res/resources.dart'; ...@@ -6,11 +6,11 @@ import 'package:one_poem/res/resources.dart';
6 import 'package:one_poem/routers/fluro_navigator.dart'; 6 import 'package:one_poem/routers/fluro_navigator.dart';
7 import 'package:one_poem/util/device_utils.dart'; 7 import 'package:one_poem/util/device_utils.dart';
8 import 'package:one_poem/util/other_utils.dart'; 8 import 'package:one_poem/util/other_utils.dart';
9 +import 'package:one_poem/util/toast_utils.dart';
9 import 'package:one_poem/widgets/click_item.dart'; 10 import 'package:one_poem/widgets/click_item.dart';
10 import 'package:one_poem/widgets/my_app_bar.dart'; 11 import 'package:one_poem/widgets/my_app_bar.dart';
11 12
12 class AboutPage extends StatefulWidget { 13 class AboutPage extends StatefulWidget {
13 -
14 const AboutPage({Key? key}) : super(key: key); 14 const AboutPage({Key? key}) : super(key: key);
15 15
16 @override 16 @override
...@@ -18,7 +18,6 @@ class AboutPage extends StatefulWidget { ...@@ -18,7 +18,6 @@ class AboutPage extends StatefulWidget {
18 } 18 }
19 19
20 class _AboutPageState extends State<AboutPage> { 20 class _AboutPageState extends State<AboutPage> {
21 -
22 final List<FlutterLogoStyle> _styles = <FlutterLogoStyle>[ 21 final List<FlutterLogoStyle> _styles = <FlutterLogoStyle>[
23 FlutterLogoStyle.stacked, 22 FlutterLogoStyle.stacked,
24 FlutterLogoStyle.markOnly, 23 FlutterLogoStyle.markOnly,
...@@ -26,11 +25,20 @@ class _AboutPageState extends State<AboutPage> { ...@@ -26,11 +25,20 @@ class _AboutPageState extends State<AboutPage> {
26 ]; 25 ];
27 26
28 final List<Cubic> _curves = <Cubic>[ 27 final List<Cubic> _curves = <Cubic>[
29 - Curves.ease, Curves.easeIn, Curves.easeInOutCubic, Curves.easeInOut, 28 + Curves.ease,
30 - Curves.easeInQuad, Curves.easeInCirc, Curves.easeInBack, Curves.easeInOutExpo, 29 + Curves.easeIn,
31 - Curves.easeInToLinear, Curves.easeOutExpo, Curves.easeInOutSine, Curves.easeOutSine, 30 + Curves.easeInOutCubic,
31 + Curves.easeInOut,
32 + Curves.easeInQuad,
33 + Curves.easeInCirc,
34 + Curves.easeInBack,
35 + Curves.easeInOutExpo,
36 + Curves.easeInToLinear,
37 + Curves.easeOutExpo,
38 + Curves.easeInOutSine,
39 + Curves.easeOutSine,
32 ]; 40 ];
33 - 41 +
34 // 取随机颜色 42 // 取随机颜色
35 Color _randomColor() { 43 Color _randomColor() {
36 final int red = Random.secure().nextInt(255); 44 final int red = Random.secure().nextInt(255);
...@@ -51,9 +59,7 @@ class _AboutPageState extends State<AboutPage> { ...@@ -51,9 +59,7 @@ class _AboutPageState extends State<AboutPage> {
51 if (!mounted) { 59 if (!mounted) {
52 return; 60 return;
53 } 61 }
54 - setState(() { 62 + setState(() {});
55 -
56 - });
57 }); 63 });
58 }); 64 });
59 } 65 }
...@@ -64,11 +70,21 @@ class _AboutPageState extends State<AboutPage> { ...@@ -64,11 +70,21 @@ class _AboutPageState extends State<AboutPage> {
64 _countdownTimer = null; 70 _countdownTimer = null;
65 super.dispose(); 71 super.dispose();
66 } 72 }
67 - 73 +
68 @override 74 @override
69 Widget build(BuildContext context) { 75 Widget build(BuildContext context) {
70 return Scaffold( 76 return Scaffold(
71 - appBar: const MyAppBar( 77 + appBar: MyAppBar(
78 + homeMenuHeader: Container(
79 + alignment: Alignment.center,
80 + width: double.infinity,
81 + child: const Text(
82 + "关于我们",
83 + style: TextStyle(
84 + color: Colors.white,
85 + ),
86 + ),
87 + ),
72 ), 88 ),
73 body: Column( 89 body: Column(
74 children: <Widget>[ 90 children: <Widget>[
...@@ -81,13 +97,15 @@ class _AboutPageState extends State<AboutPage> { ...@@ -81,13 +97,15 @@ class _AboutPageState extends State<AboutPage> {
81 ), 97 ),
82 Gaps.vGap10, 98 Gaps.vGap10,
83 ClickItem( 99 ClickItem(
84 - title: 'Github', 100 + title: '项目官网',
85 - content: 'Go Star', 101 + onTap: () => _launchWebURL('项目官网', 'http://www.mofunsky.com/'),
86 - onTap: () => _launchWebURL('Flutter Deer', 'https://github.com/simplezhli/flutter_deer')
87 ), 102 ),
103 + Gaps.vGap10,
88 ClickItem( 104 ClickItem(
89 - title: '作者博客', 105 + title: '自我介绍',
90 - onTap: () => _launchWebURL('作者博客', 'https://weilu.blog.csdn.net') 106 + onTap: () {
107 + Toast.show('我们是一首很有诗意的APP~');
108 + },
91 ), 109 ),
92 ], 110 ],
93 ), 111 ),
......
...@@ -11,10 +11,8 @@ import 'package:one_poem/widgets/my_app_bar.dart'; ...@@ -11,10 +11,8 @@ import 'package:one_poem/widgets/my_app_bar.dart';
11 11
12 import '../setting_router.dart'; 12 import '../setting_router.dart';
13 13
14 -
15 /// design/8设置/index.html 14 /// design/8设置/index.html
16 class SettingPage extends StatefulWidget { 15 class SettingPage extends StatefulWidget {
17 -
18 const SettingPage({Key? key}) : super(key: key); 16 const SettingPage({Key? key}) : super(key: key);
19 17
20 @override 18 @override
...@@ -25,20 +23,32 @@ class _SettingPageState extends State<SettingPage> { ...@@ -25,20 +23,32 @@ class _SettingPageState extends State<SettingPage> {
25 @override 23 @override
26 Widget build(BuildContext context) { 24 Widget build(BuildContext context) {
27 return Scaffold( 25 return Scaffold(
28 - appBar: const MyAppBar( 26 + appBar: MyAppBar(
27 + homeMenuHeader: Container(
28 + alignment: Alignment.center,
29 + width: double.infinity,
30 + child: const Text(
31 + "设置",
32 + style: TextStyle(
33 + color: Colors.white,
34 + ),
35 + ),
36 + ),
29 ), 37 ),
30 body: Column( 38 body: Column(
31 children: <Widget>[ 39 children: <Widget>[
32 Gaps.vGap5, 40 Gaps.vGap5,
33 ClickItem( 41 ClickItem(
34 title: '账号管理', 42 title: '账号管理',
35 - onTap: () => NavigatorUtils.push(context, SettingRouter.accountManagerPage), 43 + onTap: () =>
36 - ), 44 + NavigatorUtils.push(context, SettingRouter.accountManagerPage),
37 - if (Device.isMobile) ClickItem(
38 - title: '清除缓存',
39 - content: '23.5MB',
40 - onTap: () {},
41 ), 45 ),
46 + if (Device.isMobile)
47 + ClickItem(
48 + title: '清除缓存',
49 + content: '23.5MB',
50 + onTap: () {},
51 + ),
42 ClickItem( 52 ClickItem(
43 title: '夜间模式', 53 title: '夜间模式',
44 content: _getCurrentTheme(), 54 content: _getCurrentTheme(),
...@@ -49,10 +59,11 @@ class _SettingPageState extends State<SettingPage> { ...@@ -49,10 +59,11 @@ class _SettingPageState extends State<SettingPage> {
49 content: _getCurrentLocale(), 59 content: _getCurrentLocale(),
50 onTap: () => NavigatorUtils.push(context, SettingRouter.localePage), 60 onTap: () => NavigatorUtils.push(context, SettingRouter.localePage),
51 ), 61 ),
52 - if (Device.isMobile) ClickItem( 62 + if (Device.isMobile)
53 - title: '检查更新', 63 + ClickItem(
54 - onTap: _showUpdateDialog, 64 + title: '检查更新',
55 - ), 65 + onTap: _showUpdateDialog,
66 + ),
56 ClickItem( 67 ClickItem(
57 title: '关于我们', 68 title: '关于我们',
58 onTap: () => NavigatorUtils.push(context, SettingRouter.aboutPage), 69 onTap: () => NavigatorUtils.push(context, SettingRouter.aboutPage),
...@@ -61,10 +72,6 @@ class _SettingPageState extends State<SettingPage> { ...@@ -61,10 +72,6 @@ class _SettingPageState extends State<SettingPage> {
61 title: '退出当前账号', 72 title: '退出当前账号',
62 onTap: _showExitDialog, 73 onTap: _showExitDialog,
63 ), 74 ),
64 - if (Device.isMobile) ClickItem(
65 - title: 'Deer Web版',
66 - onTap: () => NavigatorUtils.goWebViewPage(context, 'Flutter Deer', 'https://simplezhli.github.io/flutter_deer/'),
67 - ),
68 ], 75 ],
69 ), 76 ),
70 ); 77 );
...@@ -73,7 +80,7 @@ class _SettingPageState extends State<SettingPage> { ...@@ -73,7 +80,7 @@ class _SettingPageState extends State<SettingPage> {
73 String _getCurrentTheme() { 80 String _getCurrentTheme() {
74 final String? theme = SpUtil.getString(Constant.theme); 81 final String? theme = SpUtil.getString(Constant.theme);
75 String themeMode; 82 String themeMode;
76 - switch(theme) { 83 + switch (theme) {
77 case 'Dark': 84 case 'Dark':
78 themeMode = '开启'; 85 themeMode = '开启';
79 break; 86 break;
...@@ -90,7 +97,7 @@ class _SettingPageState extends State<SettingPage> { ...@@ -90,7 +97,7 @@ class _SettingPageState extends State<SettingPage> {
90 String _getCurrentLocale() { 97 String _getCurrentLocale() {
91 final String? locale = SpUtil.getString(Constant.locale); 98 final String? locale = SpUtil.getString(Constant.locale);
92 String localeMode; 99 String localeMode;
93 - switch(locale) { 100 + switch (locale) {
94 case 'zh': 101 case 'zh':
95 localeMode = '中文'; 102 localeMode = '中文';
96 break; 103 break;
...@@ -105,17 +112,13 @@ class _SettingPageState extends State<SettingPage> { ...@@ -105,17 +112,13 @@ class _SettingPageState extends State<SettingPage> {
105 } 112 }
106 113
107 void _showExitDialog() { 114 void _showExitDialog() {
108 - showDialog<void>( 115 + showDialog<void>(context: context, builder: (_) => const ExitDialog());
109 - context: context,
110 - builder: (_) => const ExitDialog()
111 - );
112 } 116 }
113 117
114 void _showUpdateDialog() { 118 void _showUpdateDialog() {
115 showDialog<void>( 119 showDialog<void>(
116 - context: context, 120 + context: context,
117 - barrierDismissible: false, 121 + barrierDismissible: false,
118 - builder: (_) => const UpdateDialog() 122 + builder: (_) => const UpdateDialog());
119 - );
120 } 123 }
121 } 124 }
......