Showing
7 changed files
with
48 additions
and
90 deletions
| ... | @@ -148,7 +148,6 @@ class _AccountPageState extends State<AccountPage> { | ... | @@ -148,7 +148,6 @@ class _AccountPageState extends State<AccountPage> { |
| 148 | ); | 148 | ); |
| 149 | return Scaffold( | 149 | return Scaffold( |
| 150 | appBar: const MyAppBar( | 150 | appBar: const MyAppBar( |
| 151 | - centerTitle: '我在', | ||
| 152 | ), | 151 | ), |
| 153 | body: Container( | 152 | body: Container( |
| 154 | decoration: const BoxDecoration( | 153 | decoration: const BoxDecoration( | ... | ... |
File mode changed
| 1 | import 'package:flutter/cupertino.dart'; | 1 | import 'package:flutter/cupertino.dart'; |
| 2 | import 'package:flutter/material.dart'; | 2 | import 'package:flutter/material.dart'; |
| 3 | import 'package:one_poem/res/gaps.dart'; | 3 | import 'package:one_poem/res/gaps.dart'; |
| 4 | +import 'package:one_poem/util/theme_utils.dart'; | ||
| 5 | +import 'package:one_poem/util/toast_utils.dart'; | ||
| 4 | import 'package:one_poem/widgets/load_image.dart'; | 6 | import 'package:one_poem/widgets/load_image.dart'; |
| 5 | import 'package:one_poem/widgets/my_app_bar.dart'; | 7 | import 'package:one_poem/widgets/my_app_bar.dart'; |
| 6 | 8 | ||
| ... | @@ -23,9 +25,11 @@ class _PoemDetailPageState extends State<PoemDetailPage> { | ... | @@ -23,9 +25,11 @@ class _PoemDetailPageState extends State<PoemDetailPage> { |
| 23 | Widget build(BuildContext context) { | 25 | Widget build(BuildContext context) { |
| 24 | return Scaffold( | 26 | return Scaffold( |
| 25 | // extendBodyBehindAppBar: true,// appbar背景透明 | 27 | // extendBodyBehindAppBar: true,// appbar背景透明 |
| 26 | - appBar: const MyAppBar( | 28 | + appBar: MyAppBar( |
| 27 | - title: '一言', | 29 | + isShowButtons: true, |
| 28 | - actionName: "返回", | 30 | + funcLeft: () { |
| 31 | + print("xxxxx"); | ||
| 32 | + }, | ||
| 29 | ), | 33 | ), |
| 30 | body: Container( | 34 | body: Container( |
| 31 | decoration: const BoxDecoration( | 35 | decoration: const BoxDecoration( | ... | ... |
| ... | @@ -4,12 +4,13 @@ import 'package:one_poem/tiktok/controller/tiktok_video_list_controller.dart'; | ... | @@ -4,12 +4,13 @@ import 'package:one_poem/tiktok/controller/tiktok_video_list_controller.dart'; |
| 4 | import 'package:one_poem/tiktok/mock/video.dart'; | 4 | import 'package:one_poem/tiktok/mock/video.dart'; |
| 5 | import 'package:one_poem/tiktok/pages/search_page.dart'; | 5 | import 'package:one_poem/tiktok/pages/search_page.dart'; |
| 6 | import 'package:one_poem/tiktok/style/physics.dart'; | 6 | import 'package:one_poem/tiktok/style/physics.dart'; |
| 7 | -import 'package:one_poem/tiktok/widgets/tiktok_header.dart'; | ||
| 8 | import 'package:one_poem/tiktok/widgets/tiktok_scaffold.dart'; | 7 | import 'package:one_poem/tiktok/widgets/tiktok_scaffold.dart'; |
| 9 | import 'package:one_poem/tiktok/widgets/tiktok_top_info.dart'; | 8 | import 'package:one_poem/tiktok/widgets/tiktok_top_info.dart'; |
| 10 | import 'package:one_poem/tiktok/widgets/tiktok_video.dart'; | 9 | import 'package:one_poem/tiktok/widgets/tiktok_video.dart'; |
| 11 | import 'package:one_poem/tiktok/widgets/tiktok_video_button_column.dart'; | 10 | import 'package:one_poem/tiktok/widgets/tiktok_video_button_column.dart'; |
| 12 | import 'package:one_poem/tiktok/widgets/tiktok_video_poem.dart'; | 11 | import 'package:one_poem/tiktok/widgets/tiktok_video_poem.dart'; |
| 12 | +import 'package:one_poem/util/toast_utils.dart'; | ||
| 13 | +import 'package:one_poem/widgets/my_app_bar.dart'; | ||
| 13 | import 'package:video_player/video_player.dart'; | 14 | import 'package:video_player/video_player.dart'; |
| 14 | 15 | ||
| 15 | import 'poem_detail.dart'; | 16 | import 'poem_detail.dart'; |
| ... | @@ -28,10 +29,6 @@ class _PoemPageState extends State<PoemPage> with WidgetsBindingObserver { | ... | @@ -28,10 +29,6 @@ class _PoemPageState extends State<PoemPage> with WidgetsBindingObserver { |
| 28 | 29 | ||
| 29 | final TikTokVideoListController _videoListController = | 30 | final TikTokVideoListController _videoListController = |
| 30 | TikTokVideoListController(); | 31 | TikTokVideoListController(); |
| 31 | - | ||
| 32 | - /// 记录点赞 | ||
| 33 | - Map<int, bool> favoriteMap = {}; | ||
| 34 | - | ||
| 35 | List<UserVideo> videoDataList = []; | 32 | List<UserVideo> videoDataList = []; |
| 36 | 33 | ||
| 37 | @override | 34 | @override |
| ... | @@ -95,12 +92,6 @@ class _PoemPageState extends State<PoemPage> with WidgetsBindingObserver { | ... | @@ -95,12 +92,6 @@ class _PoemPageState extends State<PoemPage> with WidgetsBindingObserver { |
| 95 | double a = MediaQuery.of(context).size.aspectRatio; | 92 | double a = MediaQuery.of(context).size.aspectRatio; |
| 96 | bool hasBottomPadding = a < 0.55; | 93 | bool hasBottomPadding = a < 0.55; |
| 97 | 94 | ||
| 98 | - var header = TikTokHeader( | ||
| 99 | - onSearch: () { | ||
| 100 | - tkController.animateToLeft(); | ||
| 101 | - }, | ||
| 102 | - ); | ||
| 103 | - | ||
| 104 | var detailPage = PoemDetailPage( | 95 | var detailPage = PoemDetailPage( |
| 105 | onPop: () { | 96 | onPop: () { |
| 106 | tkController.animateToMiddle(); | 97 | tkController.animateToMiddle(); |
| ... | @@ -114,7 +105,9 @@ class _PoemPageState extends State<PoemPage> with WidgetsBindingObserver { | ... | @@ -114,7 +105,9 @@ class _PoemPageState extends State<PoemPage> with WidgetsBindingObserver { |
| 114 | // 组合 | 105 | // 组合 |
| 115 | return TikTokScaffold( | 106 | return TikTokScaffold( |
| 116 | controller: tkController, | 107 | controller: tkController, |
| 117 | - header: header, | 108 | + header: MyAppBar( |
| 109 | + isBack: false, | ||
| 110 | + ), | ||
| 118 | leftPage: searchPage, | 111 | leftPage: searchPage, |
| 119 | rightPage: detailPage, | 112 | rightPage: detailPage, |
| 120 | enableGesture: true, | 113 | enableGesture: true, | ... | ... |
| ... | @@ -20,7 +20,6 @@ class _AccountManagerPageState extends State<AccountManagerPage> { | ... | @@ -20,7 +20,6 @@ class _AccountManagerPageState extends State<AccountManagerPage> { |
| 20 | Widget build(BuildContext context) { | 20 | Widget build(BuildContext context) { |
| 21 | return Scaffold( | 21 | return Scaffold( |
| 22 | appBar: const MyAppBar( | 22 | appBar: const MyAppBar( |
| 23 | - centerTitle: '账号管理', | ||
| 24 | ), | 23 | ), |
| 25 | body: Column( | 24 | body: Column( |
| 26 | children: <Widget>[ | 25 | children: <Widget>[ | ... | ... |
| 1 | -import 'package:flutter/material.dart'; | ||
| 2 | -import 'package:tapped/tapped.dart'; | ||
| 3 | - | ||
| 4 | -class TikTokHeader extends StatefulWidget { | ||
| 5 | - final Function? onSearch; | ||
| 6 | - const TikTokHeader({ | ||
| 7 | - Key? key, | ||
| 8 | - this.onSearch, | ||
| 9 | - }) : super(key: key); | ||
| 10 | - | ||
| 11 | - @override | ||
| 12 | - _TikTokHeaderState createState() => _TikTokHeaderState(); | ||
| 13 | -} | ||
| 14 | - | ||
| 15 | -class _TikTokHeaderState extends State<TikTokHeader> { | ||
| 16 | - int currentSelect = 0; | ||
| 17 | - @override | ||
| 18 | - Widget build(BuildContext context) { | ||
| 19 | - return Container( | ||
| 20 | - padding: const EdgeInsets.symmetric(horizontal: 16), | ||
| 21 | - child: Row( | ||
| 22 | - mainAxisAlignment: MainAxisAlignment.center, | ||
| 23 | - children: <Widget>[ | ||
| 24 | - Expanded( | ||
| 25 | - child: Tapped( | ||
| 26 | - child: Container( | ||
| 27 | - color: Colors.black.withOpacity(0), | ||
| 28 | - padding: const EdgeInsets.all(4), | ||
| 29 | - alignment: Alignment.centerLeft, | ||
| 30 | - child: Icon( | ||
| 31 | - Icons.star, | ||
| 32 | - color: Colors.white.withOpacity(0.66), | ||
| 33 | - ), | ||
| 34 | - ), | ||
| 35 | - onTap: widget.onSearch, | ||
| 36 | - ), | ||
| 37 | - ), | ||
| 38 | - Expanded( | ||
| 39 | - child: Tapped( | ||
| 40 | - child: Container( | ||
| 41 | - color: Colors.black.withOpacity(0), | ||
| 42 | - padding: const EdgeInsets.all(4), | ||
| 43 | - alignment: Alignment.centerRight, | ||
| 44 | - child: Icon( | ||
| 45 | - Icons.ios_share, | ||
| 46 | - color: Colors.white.withOpacity(0.66), | ||
| 47 | - ), | ||
| 48 | - ), | ||
| 49 | - ), | ||
| 50 | - ), | ||
| 51 | - ], | ||
| 52 | - ), | ||
| 53 | - ); | ||
| 54 | - } | ||
| 55 | -} |
| ... | @@ -3,12 +3,10 @@ import 'package:flutter/services.dart'; | ... | @@ -3,12 +3,10 @@ import 'package:flutter/services.dart'; |
| 3 | import 'package:one_poem/util/theme_utils.dart'; | 3 | import 'package:one_poem/util/theme_utils.dart'; |
| 4 | import 'package:one_poem/res/resources.dart'; | 4 | import 'package:one_poem/res/resources.dart'; |
| 5 | 5 | ||
| 6 | -import 'my_button.dart'; | ||
| 7 | - | ||
| 8 | /// 自定义AppBar | 6 | /// 自定义AppBar |
| 9 | class MyAppBar extends StatelessWidget implements PreferredSizeWidget { | 7 | class MyAppBar extends StatelessWidget implements PreferredSizeWidget { |
| 10 | - const MyAppBar( | 8 | + const MyAppBar({ |
| 11 | - {Key? key, | 9 | + Key? key, |
| 12 | this.backgroundColor, | 10 | this.backgroundColor, |
| 13 | this.title = '', | 11 | this.title = '', |
| 14 | this.centerTitle = '', | 12 | this.centerTitle = '', |
| ... | @@ -16,8 +14,15 @@ class MyAppBar extends StatelessWidget implements PreferredSizeWidget { | ... | @@ -16,8 +14,15 @@ class MyAppBar extends StatelessWidget implements PreferredSizeWidget { |
| 16 | this.backImg = 'assets/images/ic_back_black.png', | 14 | this.backImg = 'assets/images/ic_back_black.png', |
| 17 | this.backImgColor, | 15 | this.backImgColor, |
| 18 | this.onPressed, | 16 | this.onPressed, |
| 19 | - this.isBack = true}) | 17 | + this.isBack = true, |
| 20 | - : super(key: key); | 18 | + this.buttonLeft, |
| 19 | + this.funcLeft, | ||
| 20 | + this.buttonCenter, | ||
| 21 | + this.funcCenter, | ||
| 22 | + this.buttonRight, | ||
| 23 | + this.funcRight, | ||
| 24 | + this.isShowButtons = false, | ||
| 25 | + }) : super(key: key); | ||
| 21 | 26 | ||
| 22 | final Color? backgroundColor; | 27 | final Color? backgroundColor; |
| 23 | final String title; | 28 | final String title; |
| ... | @@ -27,6 +32,14 @@ class MyAppBar extends StatelessWidget implements PreferredSizeWidget { | ... | @@ -27,6 +32,14 @@ class MyAppBar extends StatelessWidget implements PreferredSizeWidget { |
| 27 | final String actionName; | 32 | final String actionName; |
| 28 | final VoidCallback? onPressed; | 33 | final VoidCallback? onPressed; |
| 29 | final bool isBack; | 34 | final bool isBack; |
| 35 | + final bool isShowButtons; | ||
| 36 | + | ||
| 37 | + final String? buttonLeft; | ||
| 38 | + final Function? funcLeft; | ||
| 39 | + final String? buttonCenter; | ||
| 40 | + final Function? funcCenter; | ||
| 41 | + final String? buttonRight; | ||
| 42 | + final Function? funcRight; | ||
| 30 | 43 | ||
| 31 | @override | 44 | @override |
| 32 | Widget build(BuildContext context) { | 45 | Widget build(BuildContext context) { |
| ... | @@ -89,31 +102,36 @@ class MyAppBar extends StatelessWidget implements PreferredSizeWidget { | ... | @@ -89,31 +102,36 @@ class MyAppBar extends StatelessWidget implements PreferredSizeWidget { |
| 89 | namesRoute: true, | 102 | namesRoute: true, |
| 90 | header: true, | 103 | header: true, |
| 91 | child: Container( | 104 | child: Container( |
| 92 | - // decoration: new BoxDecoration( | ||
| 93 | - // color: Colors.red, | ||
| 94 | - // ), | ||
| 95 | alignment: Alignment.center, | 105 | alignment: Alignment.center, |
| 96 | width: double.infinity, | 106 | width: double.infinity, |
| 97 | margin: const EdgeInsets.symmetric(horizontal: 48.0), | 107 | margin: const EdgeInsets.symmetric(horizontal: 48.0), |
| 98 | - child: Row( | 108 | + child: isShowButtons ? Row( |
| 99 | - mainAxisAlignment: MainAxisAlignment.center, | ||
| 100 | children: [ | 109 | children: [ |
| 101 | TextButton( | 110 | TextButton( |
| 102 | - onPressed: () {}, | 111 | + onPressed: () => funcLeft!(), |
| 103 | - child: const Text("一言", style: TextStyle(color: Colors.white),), | 112 | + child: Text( |
| 113 | + buttonLeft ?? "一言", | ||
| 114 | + style: const TextStyle(color: Colors.white), | ||
| 115 | + ), | ||
| 104 | ), | 116 | ), |
| 105 | const Text("|"), | 117 | const Text("|"), |
| 106 | TextButton( | 118 | TextButton( |
| 107 | - onPressed: () {}, | 119 | + onPressed: () => funcCenter!(), |
| 108 | - child: const Text("译解", style: TextStyle(color: Colors.white),), | 120 | + child: Text( |
| 121 | + buttonCenter ?? "译解", | ||
| 122 | + style: const TextStyle(color: Colors.white), | ||
| 123 | + ), | ||
| 109 | ), | 124 | ), |
| 110 | const Text("|"), | 125 | const Text("|"), |
| 111 | TextButton( | 126 | TextButton( |
| 112 | - onPressed: () {}, | 127 | + onPressed: () => funcRight!(), |
| 113 | - child: const Text("临境", style: TextStyle(color: Colors.white),), | 128 | + child: Text( |
| 129 | + buttonRight ?? "临境", | ||
| 130 | + style: const TextStyle(color: Colors.white), | ||
| 114 | ), | 131 | ), |
| 115 | - ], | ||
| 116 | ), | 132 | ), |
| 133 | + ], | ||
| 134 | + ) : Gaps.hGap10, | ||
| 117 | ), | 135 | ), |
| 118 | ); | 136 | ); |
| 119 | 137 | ... | ... |
-
Please register or login to post a comment