Showing
4 changed files
with
54 additions
and
5 deletions
assets/images/poem/ydss.png
0 → 100644
22.5 KB
| ... | @@ -141,6 +141,18 @@ class _LoginPageState extends State<LoginPage> | ... | @@ -141,6 +141,18 @@ class _LoginPageState extends State<LoginPage> |
| 141 | onPressed: () { | 141 | onPressed: () { |
| 142 | NavigatorUtils.push(context, LoginRouter.smsLoginPage); | 142 | NavigatorUtils.push(context, LoginRouter.smsLoginPage); |
| 143 | }, | 143 | }, |
| 144 | + homeActionWidgets: TextButton( | ||
| 145 | + onPressed: () { | ||
| 146 | + NavigatorUtils.push(context, LoginRouter.smsLoginPage); | ||
| 147 | + }, | ||
| 148 | + child: Text( | ||
| 149 | + "验证码登录", | ||
| 150 | + style: TextStyle( | ||
| 151 | + color: Colors.black45, | ||
| 152 | + fontSize: 15.px, | ||
| 153 | + ), | ||
| 154 | + ), | ||
| 155 | + ), | ||
| 144 | ), | 156 | ), |
| 145 | body: Stack( | 157 | body: Stack( |
| 146 | children: [ | 158 | children: [ | ... | ... |
| 1 | -import 'dart:ui'; | ||
| 2 | - | ||
| 3 | import 'package:flutter/gestures.dart'; | 1 | import 'package:flutter/gestures.dart'; |
| 4 | import 'package:flutter/material.dart'; | 2 | import 'package:flutter/material.dart'; |
| 5 | import 'package:one_poem/login/widgets/my_text_field.dart'; | 3 | import 'package:one_poem/login/widgets/my_text_field.dart'; |
| ... | @@ -66,7 +64,7 @@ class _SMSLoginPageState extends State<SMSLoginPage> | ... | @@ -66,7 +64,7 @@ class _SMSLoginPageState extends State<SMSLoginPage> |
| 66 | @override | 64 | @override |
| 67 | Widget build(BuildContext context) { | 65 | Widget build(BuildContext context) { |
| 68 | return Scaffold( | 66 | return Scaffold( |
| 69 | - appBar: MyAppBar(), | 67 | + appBar: const MyAppBar(), |
| 70 | body: MyScrollView( | 68 | body: MyScrollView( |
| 71 | keyboardConfig: Utils.getKeyboardActionsConfig( | 69 | keyboardConfig: Utils.getKeyboardActionsConfig( |
| 72 | context, <FocusNode>[_nodeText1, _nodeText2]), | 70 | context, <FocusNode>[_nodeText1, _nodeText2]), | ... | ... |
| 1 | import 'dart:ui'; | 1 | import 'dart:ui'; |
| 2 | 2 | ||
| 3 | -import 'package:flutter/cupertino.dart'; | ||
| 4 | import 'package:flutter/material.dart'; | 3 | import 'package:flutter/material.dart'; |
| 5 | import 'package:one_poem/poem/widgets/poem_content.dart'; | 4 | import 'package:one_poem/poem/widgets/poem_content.dart'; |
| 6 | import 'package:one_poem/poem/widgets/poem_user_audio.dart'; | 5 | import 'package:one_poem/poem/widgets/poem_user_audio.dart'; |
| 7 | import 'package:one_poem/poem/widgets/poem_user_comments.dart'; | 6 | import 'package:one_poem/poem/widgets/poem_user_comments.dart'; |
| 8 | import 'package:one_poem/res/gaps.dart'; | 7 | import 'package:one_poem/res/gaps.dart'; |
| 9 | import 'package:one_poem/routers/fluro_navigator.dart'; | 8 | import 'package:one_poem/routers/fluro_navigator.dart'; |
| 10 | -import 'package:one_poem/util/toast_utils.dart'; | 9 | +import 'package:one_poem/util/image_utils.dart'; |
| 11 | import 'package:one_poem/widgets/bars/home_action_bar.dart'; | 10 | import 'package:one_poem/widgets/bars/home_action_bar.dart'; |
| 12 | import 'package:one_poem/widgets/bars/home_menu_bar.dart'; | 11 | import 'package:one_poem/widgets/bars/home_menu_bar.dart'; |
| 13 | import 'package:one_poem/widgets/my_app_bar.dart'; | 12 | import 'package:one_poem/widgets/my_app_bar.dart'; |
| 14 | 13 | ||
| 15 | import 'package:one_poem/extension/int_extension.dart'; | 14 | import 'package:one_poem/extension/int_extension.dart'; |
| 15 | +import 'package:one_poem/widgets/popup_window.dart'; | ||
| 16 | 16 | ||
| 17 | import '../poem_router.dart'; | 17 | import '../poem_router.dart'; |
| 18 | 18 | ||
| ... | @@ -39,11 +39,50 @@ class PoemDetailPage extends StatefulWidget { | ... | @@ -39,11 +39,50 @@ class PoemDetailPage extends StatefulWidget { |
| 39 | 39 | ||
| 40 | class _PoemDetailPageState extends State<PoemDetailPage> { | 40 | class _PoemDetailPageState extends State<PoemDetailPage> { |
| 41 | PoemContentSwitch contentSwitch = PoemContentSwitch.audio; | 41 | PoemContentSwitch contentSwitch = PoemContentSwitch.audio; |
| 42 | + final GlobalKey _hintKey = GlobalKey(); | ||
| 43 | + | ||
| 44 | + void _showHint() { | ||
| 45 | + final RenderBox hint = | ||
| 46 | + _hintKey.currentContext!.findRenderObject()! as RenderBox; | ||
| 47 | + showPopupWindow<void>( | ||
| 48 | + context: context, | ||
| 49 | + isShowBg: true, | ||
| 50 | + offset: const Offset(50.0, 150.0), | ||
| 51 | + anchor: hint, | ||
| 52 | + child: Semantics( | ||
| 53 | + label: '弹出引导页', | ||
| 54 | + hint: '向左滑动可删除列表,点击可关闭', | ||
| 55 | + button: true, | ||
| 56 | + child: Container( | ||
| 57 | + key: const Key('hint'), | ||
| 58 | + width: 200.0, | ||
| 59 | + height: 147.0, | ||
| 60 | + decoration: BoxDecoration( | ||
| 61 | + image: DecorationImage( | ||
| 62 | + image: ImageUtils.getAssetImage('poem/ydss'), | ||
| 63 | + fit: BoxFit.fitWidth, | ||
| 64 | + ), | ||
| 65 | + ), | ||
| 66 | + ), | ||
| 67 | + ), | ||
| 68 | + ); | ||
| 69 | + } | ||
| 70 | + | ||
| 71 | + @override | ||
| 72 | + void initState() { | ||
| 73 | + super.initState(); | ||
| 74 | + // 获取Build完成状态监听 | ||
| 75 | + WidgetsBinding.instance!.addPostFrameCallback((_) { | ||
| 76 | + _showHint(); | ||
| 77 | + }); | ||
| 78 | + } | ||
| 79 | + | ||
| 42 | @override | 80 | @override |
| 43 | Widget build(BuildContext context) { | 81 | Widget build(BuildContext context) { |
| 44 | const poemStr = "清晨入古寺,初日照高林。\n竹径通幽处,禅房花木深。\n山光悦鸟性,潭影空人心。\n万籁此都寂,但余钟磬音。"; | 82 | const poemStr = "清晨入古寺,初日照高林。\n竹径通幽处,禅房花木深。\n山光悦鸟性,潭影空人心。\n万籁此都寂,但余钟磬音。"; |
| 45 | return Scaffold( | 83 | return Scaffold( |
| 46 | appBar: MyAppBar( | 84 | appBar: MyAppBar( |
| 85 | + key: _hintKey, | ||
| 47 | isBack: true, | 86 | isBack: true, |
| 48 | isTransparent: false, | 87 | isTransparent: false, |
| 49 | homeMenuHeader: HomeMenuHeader( | 88 | homeMenuHeader: HomeMenuHeader( | ... | ... |
-
Please register or login to post a comment