Showing
13 changed files
with
139 additions
and
260 deletions
assets/fonts/LongCang-Regular.ttf
0 → 100644
No preview for this file type
assets/fonts/ZCOOLXiaoWei-Regular.ttf
0 → 100644
No preview for this file type
assets/images/category/category_item_bg.png
0 → 100644
1023 Bytes
| ... | @@ -2,6 +2,7 @@ import 'package:flutter/material.dart'; | ... | @@ -2,6 +2,7 @@ import 'package:flutter/material.dart'; |
| 2 | import 'package:one_poem/category/provider/categories_page_provider.dart'; | 2 | import 'package:one_poem/category/provider/categories_page_provider.dart'; |
| 3 | import 'package:one_poem/util/theme_utils.dart'; | 3 | import 'package:one_poem/util/theme_utils.dart'; |
| 4 | import 'package:one_poem/widgets/load_image.dart'; | 4 | import 'package:one_poem/widgets/load_image.dart'; |
| 5 | +import 'package:one_poem/widgets/my_app_bar.dart'; | ||
| 5 | import 'package:provider/provider.dart'; | 6 | import 'package:provider/provider.dart'; |
| 6 | 7 | ||
| 7 | import 'category_list_page.dart'; | 8 | import 'category_list_page.dart'; |
| ... | @@ -42,6 +43,8 @@ class _CategoriesPageState extends State<CategoriesPage> | ... | @@ -42,6 +43,8 @@ class _CategoriesPageState extends State<CategoriesPage> |
| 42 | return ChangeNotifierProvider<CategoriesPageProvider>( | 43 | return ChangeNotifierProvider<CategoriesPageProvider>( |
| 43 | create: (_) => provider, | 44 | create: (_) => provider, |
| 44 | child: Scaffold( | 45 | child: Scaffold( |
| 46 | + appBar: const MyAppBar( | ||
| 47 | + ), | ||
| 45 | body: Column( | 48 | body: Column( |
| 46 | key: _bodyKey, | 49 | key: _bodyKey, |
| 47 | crossAxisAlignment: CrossAxisAlignment.start, | 50 | crossAxisAlignment: CrossAxisAlignment.start, | ... | ... |
| 1 | import 'package:common_utils/common_utils.dart'; | 1 | import 'package:common_utils/common_utils.dart'; |
| 2 | +import 'package:flutter/cupertino.dart'; | ||
| 2 | import 'package:flutter/material.dart'; | 3 | import 'package:flutter/material.dart'; |
| 3 | import 'package:one_poem/category/models/category_item_entity.dart'; | 4 | import 'package:one_poem/category/models/category_item_entity.dart'; |
| 5 | +import 'package:one_poem/res/gaps.dart'; | ||
| 4 | import 'package:one_poem/res/resources.dart'; | 6 | import 'package:one_poem/res/resources.dart'; |
| 5 | import 'package:one_poem/util/device_utils.dart'; | 7 | import 'package:one_poem/util/device_utils.dart'; |
| 6 | import 'package:one_poem/util/other_utils.dart'; | 8 | import 'package:one_poem/util/other_utils.dart'; |
| 7 | -import 'package:one_poem/util/theme_utils.dart'; | ||
| 8 | import 'package:one_poem/widgets/load_image.dart'; | 9 | import 'package:one_poem/widgets/load_image.dart'; |
| 9 | -import 'package:one_poem/widgets/my_button.dart'; | ||
| 10 | 10 | ||
| 11 | -import 'menu_reveal.dart'; | ||
| 12 | - | ||
| 13 | -/// design/4商品/index.html#artboard1 | ||
| 14 | class CategoryItem extends StatelessWidget { | 11 | class CategoryItem extends StatelessWidget { |
| 15 | - | ||
| 16 | const CategoryItem({ | 12 | const CategoryItem({ |
| 17 | Key? key, | 13 | Key? key, |
| 18 | required this.item, | 14 | required this.item, |
| ... | @@ -25,7 +21,7 @@ class CategoryItem extends StatelessWidget { | ... | @@ -25,7 +21,7 @@ class CategoryItem extends StatelessWidget { |
| 25 | required this.onTapMenuClose, | 21 | required this.onTapMenuClose, |
| 26 | required this.animation, | 22 | required this.animation, |
| 27 | required this.heroTag, | 23 | required this.heroTag, |
| 28 | - }): super(key: key); | 24 | + }) : super(key: key); |
| 29 | 25 | ||
| 30 | final CategoryItemEntity item; | 26 | final CategoryItemEntity item; |
| 31 | final int index; | 27 | final int index; |
| ... | @@ -40,169 +36,41 @@ class CategoryItem extends StatelessWidget { | ... | @@ -40,169 +36,41 @@ class CategoryItem extends StatelessWidget { |
| 40 | 36 | ||
| 41 | @override | 37 | @override |
| 42 | Widget build(BuildContext context) { | 38 | Widget build(BuildContext context) { |
| 43 | - final Row child = Row( | 39 | + return Padding( |
| 44 | - crossAxisAlignment: CrossAxisAlignment.start, | 40 | + padding: const EdgeInsets.only(left: 10.0, top: 10.0, right: 10.0), |
| 45 | - children: <Widget>[ | 41 | + child: DecoratedBox( |
| 46 | - ExcludeSemantics( | 42 | + decoration: BoxDecoration( |
| 47 | - child: Hero( | 43 | + image: const DecorationImage( |
| 48 | - tag: heroTag, | 44 | + image: AssetImage("assets/images/category/category_item_bg.png"), |
| 49 | - child: LoadImage(item.icon, width: 72.0, height: 72.0), | 45 | + fit: BoxFit.fill, |
| 50 | ), | 46 | ), |
| 47 | + border: Border.all(color: Colors.grey, width: 0.5), // 边色与边宽度 | ||
| 48 | + borderRadius: BorderRadius.circular(2.0), | ||
| 51 | ), | 49 | ), |
| 52 | - Gaps.hGap8, | 50 | + child: Padding( |
| 53 | - Expanded( | 51 | + padding: const EdgeInsets.all(10.0), |
| 54 | child: Column( | 52 | child: Column( |
| 55 | - crossAxisAlignment: CrossAxisAlignment.start, | 53 | + crossAxisAlignment: CrossAxisAlignment.center, |
| 56 | children: <Widget>[ | 54 | children: <Widget>[ |
| 57 | - Text( | ||
| 58 | - item.type % 3 != 0 ? '八月十五中秋月饼礼盒' : '八月十五中秋月饼礼盒八月十五中秋月饼礼盒', | ||
| 59 | - maxLines: 1, | ||
| 60 | - overflow: TextOverflow.ellipsis, | ||
| 61 | - ), | ||
| 62 | - Gaps.vGap4, | ||
| 63 | Row( | 55 | Row( |
| 64 | - children: <Widget>[ | 56 | + mainAxisAlignment: MainAxisAlignment.spaceBetween, |
| 65 | - Visibility( | 57 | + mainAxisSize: MainAxisSize.max, |
| 66 | - // 默认为占位替换,类似于gone | 58 | + //交叉轴的布局方式,对于column来说就是水平方向的布局方式 |
| 67 | - visible: item.type % 3 == 0, | 59 | + crossAxisAlignment: CrossAxisAlignment.center, |
| 68 | - child: _GoodsItemTag( | 60 | + children: const <Widget>[ |
| 69 | - text: '立减', | 61 | + Text("此地"), |
| 70 | - color: Theme.of(context).errorColor, | 62 | + Text("北京 海淀 万泉庄", maxLines: 3,), |
| 71 | - ), | 63 | + Text("京", style: TextStyle(fontSize: 30)), |
| 72 | - ), | ||
| 73 | - Opacity( | ||
| 74 | - // 修改透明度实现隐藏,类似于invisible | ||
| 75 | - opacity: item.type % 2 != 0 ? 0.0 : 1.0, | ||
| 76 | - child: _GoodsItemTag( | ||
| 77 | - text: '金币抵扣', | ||
| 78 | - color: Theme.of(context).primaryColor, | ||
| 79 | - ), | ||
| 80 | - ) | ||
| 81 | ], | 64 | ], |
| 82 | ), | 65 | ), |
| 83 | Gaps.vGap16, | 66 | Gaps.vGap16, |
| 84 | - Text(Utils.formatPrice('20.00', format: MoneyFormat.NORMAL)) | 67 | + const Text( |
| 85 | - ], | 68 | + "前不见古人,后不见来者。\n念天地之悠悠,独怆然而涕下。\n", |
| 86 | - ), | 69 | + style: TextStyle(fontSize: 22.0, fontFamily: "ZCOOLXiaoWei"), |
| 87 | - ), | ||
| 88 | - Column( | ||
| 89 | - crossAxisAlignment: CrossAxisAlignment.end, | ||
| 90 | - children: <Widget>[ | ||
| 91 | - Semantics( | ||
| 92 | - /// container属性为true,防止上方ExcludeSemantics去除此处语义 | ||
| 93 | - container: true, | ||
| 94 | - label: '商品操作菜单', | ||
| 95 | - child: GestureDetector( | ||
| 96 | - onTap: onTapMenu, | ||
| 97 | - child: Container( | ||
| 98 | - key: Key('goods_menu_item_$index'), | ||
| 99 | - width: 44.0, | ||
| 100 | - height: 44.0, | ||
| 101 | - color: Colors.transparent, | ||
| 102 | - padding: const EdgeInsets.only(left: 28.0, bottom: 28.0), | ||
| 103 | - child: const LoadAssetImage('goods/ellipsis'), | ||
| 104 | - ), | ||
| 105 | - ), | ||
| 106 | - ), | ||
| 107 | - Padding( | ||
| 108 | - padding: const EdgeInsets.only(top: 10.0), | ||
| 109 | - child: Text( | ||
| 110 | - '特产美味', | ||
| 111 | - style: Theme.of(context).textTheme.subtitle2, | ||
| 112 | - ), | ||
| 113 | - ) | ||
| 114 | - ], | ||
| 115 | - ) | ||
| 116 | - ], | ||
| 117 | - ); | ||
| 118 | - | ||
| 119 | - return Stack( | ||
| 120 | - children: <Widget>[ | ||
| 121 | - // item间的分隔线 | ||
| 122 | - Padding( | ||
| 123 | - padding: const EdgeInsets.only(left: 16.0, top: 16.0), | ||
| 124 | - child: DecoratedBox( | ||
| 125 | - decoration: BoxDecoration( | ||
| 126 | - border: Border( | ||
| 127 | - bottom: Divider.createBorderSide(context, width: 0.8), | ||
| 128 | - ), | ||
| 129 | - ), | ||
| 130 | - child: Padding( | ||
| 131 | - padding: const EdgeInsets.only(right: 16.0, bottom: 16.0), | ||
| 132 | - child: child, | ||
| 133 | - ), | ||
| 134 | - ), | ||
| 135 | ), | 70 | ), |
| 136 | - if (selectIndex != index) Gaps.empty else _buildGoodsMenu(context), | 71 | + const Text("[唐] 陈子昂《登幽州台歌》", maxLines: 1,), |
| 137 | ], | 72 | ], |
| 138 | - ); | ||
| 139 | - } | ||
| 140 | - | ||
| 141 | - Widget _buildGoodsMenu(BuildContext context) { | ||
| 142 | - return Positioned.fill( | ||
| 143 | - child: AnimatedBuilder( | ||
| 144 | - animation: animation, | ||
| 145 | - child: _buildGoodsMenuContent(context), | ||
| 146 | - builder: (_, Widget? child) { | ||
| 147 | - return MenuReveal( | ||
| 148 | - revealPercent: animation.value, | ||
| 149 | - child: child! | ||
| 150 | - ); | ||
| 151 | - } | ||
| 152 | - ), | ||
| 153 | - ); | ||
| 154 | - } | ||
| 155 | - | ||
| 156 | - Widget _buildGoodsMenuContent(BuildContext context) { | ||
| 157 | - final bool isDark = context.isDark; | ||
| 158 | - final Color buttonColor = isDark ? Colours.dark_text : Colors.white; | ||
| 159 | - | ||
| 160 | - return InkWell( | ||
| 161 | - onTap: onTapMenuClose, | ||
| 162 | - child: Container( | ||
| 163 | - color: isDark ? const Color(0xB34D4D4D) : const Color(0x4D000000), | ||
| 164 | - child: Row( | ||
| 165 | - mainAxisAlignment: MainAxisAlignment.spaceEvenly, | ||
| 166 | - children: <Widget>[ | ||
| 167 | - Gaps.hGap15, | ||
| 168 | - MyButton( | ||
| 169 | - key: Key('goods_edit_item_$index'), | ||
| 170 | - text: '编辑', | ||
| 171 | - fontSize: Dimens.font_sp16, | ||
| 172 | - radius: 24.0, | ||
| 173 | - minWidth: 56.0, | ||
| 174 | - minHeight: 56.0, | ||
| 175 | - padding: const EdgeInsets.symmetric(horizontal: 12.0), | ||
| 176 | - textColor: isDark ? Colours.dark_button_text : Colors.white, | ||
| 177 | - backgroundColor: isDark ? Colours.dark_app_main : Colours.app_main, | ||
| 178 | - onPressed: onTapEdit, | ||
| 179 | - ), | ||
| 180 | - MyButton( | ||
| 181 | - key: Key('goods_operation_item_$index'), | ||
| 182 | - text: '下架', | ||
| 183 | - fontSize: Dimens.font_sp16, | ||
| 184 | - radius: 24.0, | ||
| 185 | - minWidth: 56.0, | ||
| 186 | - minHeight: 56.0, | ||
| 187 | - padding: const EdgeInsets.symmetric(horizontal: 12.0), | ||
| 188 | - textColor: Colours.text, | ||
| 189 | - backgroundColor: buttonColor, | ||
| 190 | - onPressed: onTapOperation, | ||
| 191 | ), | 73 | ), |
| 192 | - MyButton( | ||
| 193 | - key: Key('goods_delete_item_$index'), | ||
| 194 | - text: '删除', | ||
| 195 | - fontSize: Dimens.font_sp16, | ||
| 196 | - radius: 24.0, | ||
| 197 | - minWidth: 56.0, | ||
| 198 | - minHeight: 56.0, | ||
| 199 | - padding: const EdgeInsets.symmetric(horizontal: 12.0), | ||
| 200 | - textColor: Colours.text, | ||
| 201 | - backgroundColor: buttonColor, | ||
| 202 | - onPressed: onTapDelete, | ||
| 203 | - ), | ||
| 204 | - Gaps.hGap15, | ||
| 205 | - ], | ||
| 206 | ), | 74 | ), |
| 207 | ), | 75 | ), |
| 208 | ); | 76 | ); |
| ... | @@ -210,12 +78,11 @@ class CategoryItem extends StatelessWidget { | ... | @@ -210,12 +78,11 @@ class CategoryItem extends StatelessWidget { |
| 210 | } | 78 | } |
| 211 | 79 | ||
| 212 | class _GoodsItemTag extends StatelessWidget { | 80 | class _GoodsItemTag extends StatelessWidget { |
| 213 | - | ||
| 214 | const _GoodsItemTag({ | 81 | const _GoodsItemTag({ |
| 215 | Key? key, | 82 | Key? key, |
| 216 | required this.color, | 83 | required this.color, |
| 217 | required this.text, | 84 | required this.text, |
| 218 | - }): super(key: key); | 85 | + }) : super(key: key); |
| 219 | 86 | ||
| 220 | final Color? color; | 87 | final Color? color; |
| 221 | final String text; | 88 | final String text; | ... | ... |
| ... | @@ -3,7 +3,6 @@ import 'package:one_poem/account/page/account_page.dart'; | ... | @@ -3,7 +3,6 @@ import 'package:one_poem/account/page/account_page.dart'; |
| 3 | import 'package:one_poem/category/page/categories_page.dart'; | 3 | import 'package:one_poem/category/page/categories_page.dart'; |
| 4 | import 'package:one_poem/poem/page/poem_page.dart'; | 4 | import 'package:one_poem/poem/page/poem_page.dart'; |
| 5 | import 'package:one_poem/res/resources.dart'; | 5 | import 'package:one_poem/res/resources.dart'; |
| 6 | -import 'package:one_poem/routers/not_found_page.dart'; | ||
| 7 | import 'package:one_poem/timeline/pages/timelines_page.dart'; | 6 | import 'package:one_poem/timeline/pages/timelines_page.dart'; |
| 8 | import 'package:one_poem/util/theme_utils.dart'; | 7 | import 'package:one_poem/util/theme_utils.dart'; |
| 9 | import 'package:one_poem/widgets/double_tap_back_exit_app.dart'; | 8 | import 'package:one_poem/widgets/double_tap_back_exit_app.dart'; |
| ... | @@ -60,92 +59,72 @@ class _HomeState extends State<Home> with RestorationMixin { | ... | @@ -60,92 +59,72 @@ class _HomeState extends State<Home> with RestorationMixin { |
| 60 | OnePoemLocalizations.of(context).profileBottomNavigationBarItemTitle, | 59 | OnePoemLocalizations.of(context).profileBottomNavigationBarItemTitle, |
| 61 | ]; | 60 | ]; |
| 62 | if (_list == null) { | 61 | if (_list == null) { |
| 63 | - List<List<LoadAssetImage>> _tabImages; | 62 | + List<List<Icon>> _tabImages; |
| 64 | if (!isDark) { | 63 | if (!isDark) { |
| 65 | _tabImages = [ | 64 | _tabImages = [ |
| 66 | [ | 65 | [ |
| 67 | - const LoadAssetImage( | 66 | + const Icon( |
| 68 | - 'home/icon_order', | 67 | + Icons.stream, |
| 69 | - width: _imageSize, | ||
| 70 | - color: Colours.unselected_item_color, | ||
| 71 | ), | 68 | ), |
| 72 | - const LoadAssetImage( | 69 | + const Icon( |
| 73 | - 'home/icon_order', | 70 | + Icons.stream_outlined, |
| 74 | - width: _imageSize, | ||
| 75 | - color: Colours.app_main, | ||
| 76 | ), | 71 | ), |
| 77 | ], | 72 | ], |
| 78 | [ | 73 | [ |
| 79 | - const LoadAssetImage( | 74 | + const Icon( |
| 80 | - 'home/icon_commodity', | 75 | + Icons.self_improvement_outlined, |
| 81 | - width: _imageSize, | ||
| 82 | - color: Colours.unselected_item_color, | ||
| 83 | ), | 76 | ), |
| 84 | - const LoadAssetImage( | 77 | + const Icon( |
| 85 | - 'home/icon_commodity', | 78 | + Icons.self_improvement_outlined, |
| 86 | - width: _imageSize, | ||
| 87 | - color: Colours.app_main, | ||
| 88 | ), | 79 | ), |
| 89 | - ], | 80 | + ],[ |
| 90 | - [ | 81 | + const Icon( |
| 91 | - const LoadAssetImage( | 82 | + Icons.groups, |
| 92 | - 'home/icon_statistics', | ||
| 93 | - width: _imageSize, | ||
| 94 | - color: Colours.unselected_item_color, | ||
| 95 | ), | 83 | ), |
| 96 | - const LoadAssetImage( | 84 | + const Icon( |
| 97 | - 'home/icon_statistics', | 85 | + Icons.groups_outlined, |
| 98 | - width: _imageSize, | ||
| 99 | - color: Colours.app_main, | ||
| 100 | ), | 86 | ), |
| 101 | - ], | 87 | + ],[ |
| 102 | - [ | 88 | + const Icon( |
| 103 | - const LoadAssetImage( | 89 | + Icons.perm_identity, |
| 104 | - 'home/icon_shop', | ||
| 105 | - width: _imageSize, | ||
| 106 | - color: Colours.unselected_item_color, | ||
| 107 | ), | 90 | ), |
| 108 | - const LoadAssetImage( | 91 | + const Icon( |
| 109 | - 'home/icon_shop', | 92 | + Icons.perm_identity_outlined, |
| 110 | - width: _imageSize, | ||
| 111 | - color: Colours.app_main, | ||
| 112 | ), | 93 | ), |
| 113 | - ] | 94 | + ], |
| 114 | ]; | 95 | ]; |
| 115 | } else { | 96 | } else { |
| 116 | _tabImages = [ | 97 | _tabImages = [ |
| 117 | [ | 98 | [ |
| 118 | - const LoadAssetImage('home/icon_order', width: _imageSize), | 99 | + const Icon( |
| 119 | - const LoadAssetImage( | 100 | + Icons.stream, |
| 120 | - 'home/icon_order', | ||
| 121 | - width: _imageSize, | ||
| 122 | - color: Colours.dark_app_main, | ||
| 123 | ), | 101 | ), |
| 124 | - ], | 102 | + const Icon( |
| 125 | - [ | 103 | + Icons.stream_outlined, |
| 126 | - const LoadAssetImage('home/icon_commodity', width: _imageSize), | ||
| 127 | - const LoadAssetImage( | ||
| 128 | - 'home/icon_commodity', | ||
| 129 | - width: _imageSize, | ||
| 130 | - color: Colours.dark_app_main, | ||
| 131 | ), | 104 | ), |
| 132 | ], | 105 | ], |
| 133 | [ | 106 | [ |
| 134 | - const LoadAssetImage('home/icon_statistics', width: _imageSize), | 107 | + const Icon( |
| 135 | - const LoadAssetImage( | 108 | + Icons.self_improvement_outlined, |
| 136 | - 'home/icon_statistics', | ||
| 137 | - width: _imageSize, | ||
| 138 | - color: Colours.dark_app_main, | ||
| 139 | ), | 109 | ), |
| 140 | - ], | 110 | + const Icon( |
| 141 | - [ | 111 | + Icons.self_improvement_outlined, |
| 142 | - const LoadAssetImage('home/icon_shop', width: _imageSize), | 112 | + ), |
| 143 | - const LoadAssetImage( | 113 | + ],[ |
| 144 | - 'home/icon_shop', | 114 | + const Icon( |
| 145 | - width: _imageSize, | 115 | + Icons.groups, |
| 146 | - color: Colours.dark_app_main, | 116 | + ), |
| 117 | + const Icon( | ||
| 118 | + Icons.groups_outlined, | ||
| 147 | ), | 119 | ), |
| 148 | - ] | 120 | + ],[ |
| 121 | + const Icon( | ||
| 122 | + Icons.perm_identity, | ||
| 123 | + ), | ||
| 124 | + const Icon( | ||
| 125 | + Icons.perm_identity_outlined, | ||
| 126 | + ), | ||
| 127 | + ], | ||
| 149 | ]; | 128 | ]; |
| 150 | } | 129 | } |
| 151 | _list = List.generate(_tabImages.length, (i) { | 130 | _list = List.generate(_tabImages.length, (i) { | ... | ... |
| ... | @@ -143,7 +143,9 @@ class _PoemPageState extends State<PoemPage> with WidgetsBindingObserver { | ... | @@ -143,7 +143,9 @@ class _PoemPageState extends State<PoemPage> with WidgetsBindingObserver { |
| 143 | onShare: () {}, | 143 | onShare: () {}, |
| 144 | ); | 144 | ); |
| 145 | Widget poem = TikTokVidePoem( | 145 | Widget poem = TikTokVidePoem( |
| 146 | - desc: "清晨入古寺,初日照高林。\n竹径通幽处,禅房花木深。", | 146 | + title: "每日一言", |
| 147 | + poem: "清晨入古寺,初日照高林。\n曲径通幽处,禅房花木深。\n山光悦鸟性,潭影空人心。\n万籁此都寂,但余钟磬音。\n", | ||
| 148 | + author: "--《题破山寺后禅院》常建", | ||
| 147 | onShowDetail: () { | 149 | onShowDetail: () { |
| 148 | tkController.animateToPage(TikTokPagePosition.right); | 150 | tkController.animateToPage(TikTokPagePosition.right); |
| 149 | }, | 151 | }, | ... | ... |
| ... | @@ -5,7 +5,8 @@ class Colours { | ... | @@ -5,7 +5,8 @@ class Colours { |
| 5 | static const Color dark_app_main = Color(0xFF3F7AE0); | 5 | static const Color dark_app_main = Color(0xFF3F7AE0); |
| 6 | 6 | ||
| 7 | static const Color bg_color = Color(0xfff1f1f1); | 7 | static const Color bg_color = Color(0xfff1f1f1); |
| 8 | - static const Color dark_bg_color = Color(0xFF18191A); | 8 | + // static const Color dark_bg_color = Color(0xFF18191A); |
| 9 | + static const Color dark_bg_color = Color(0x00242424); | ||
| 9 | 10 | ||
| 10 | static const Color material_bg = Color(0xFFFFFFFF); | 11 | static const Color material_bg = Color(0xFFFFFFFF); |
| 11 | static const Color dark_material_bg = Color(0xFF303233); | 12 | static const Color dark_material_bg = Color(0xFF303233); | ... | ... |
| ... | @@ -6,17 +6,14 @@ class TikTokTopInfoColumn extends StatelessWidget { | ... | @@ -6,17 +6,14 @@ class TikTokTopInfoColumn extends StatelessWidget { |
| 6 | final String? info; | 6 | final String? info; |
| 7 | const TikTokTopInfoColumn({ | 7 | const TikTokTopInfoColumn({ |
| 8 | Key? key, | 8 | Key? key, |
| 9 | - this.bottomPadding, this.info, | 9 | + this.bottomPadding, |
| 10 | + this.info, | ||
| 10 | }) : super(key: key); | 11 | }) : super(key: key); |
| 11 | 12 | ||
| 12 | @override | 13 | @override |
| 13 | Widget build(BuildContext context) { | 14 | Widget build(BuildContext context) { |
| 14 | return Container( | 15 | return Container( |
| 15 | - width: SysSize.avatar, | 16 | + margin: const EdgeInsets.all(10.0), |
| 16 | - margin: EdgeInsets.only( | ||
| 17 | - bottom: bottomPadding ?? 50, | ||
| 18 | - right: 12, | ||
| 19 | - ), | ||
| 20 | child: Column( | 17 | child: Column( |
| 21 | mainAxisAlignment: MainAxisAlignment.end, | 18 | mainAxisAlignment: MainAxisAlignment.end, |
| 22 | crossAxisAlignment: CrossAxisAlignment.end, | 19 | crossAxisAlignment: CrossAxisAlignment.end, | ... | ... |
| 1 | +import 'dart:ui'; | ||
| 2 | + | ||
| 3 | +import 'package:flutter/cupertino.dart'; | ||
| 1 | import 'package:flutter/material.dart'; | 4 | import 'package:flutter/material.dart'; |
| 2 | -import 'package:one_poem/tiktok/style/style.dart'; | 5 | +import 'package:one_poem/res/resources.dart'; |
| 3 | 6 | ||
| 4 | class TikTokVidePoem extends StatelessWidget { | 7 | class TikTokVidePoem extends StatelessWidget { |
| 5 | final double? bottomPadding; | 8 | final double? bottomPadding; |
| 6 | final Function? onShowDetail; | 9 | final Function? onShowDetail; |
| 7 | - final String? desc; | 10 | + final String? poem; |
| 11 | + final String? title; | ||
| 12 | + final String? author; | ||
| 8 | const TikTokVidePoem({ | 13 | const TikTokVidePoem({ |
| 9 | Key? key, | 14 | Key? key, |
| 10 | this.bottomPadding, | 15 | this.bottomPadding, |
| 11 | this.onShowDetail, | 16 | this.onShowDetail, |
| 12 | - this.desc, | 17 | + this.poem, |
| 18 | + this.title, | ||
| 19 | + this.author, | ||
| 13 | }) : super(key: key); | 20 | }) : super(key: key); |
| 14 | 21 | ||
| 15 | @override | 22 | @override |
| 16 | Widget build(BuildContext context) { | 23 | Widget build(BuildContext context) { |
| 17 | return Container( | 24 | return Container( |
| 18 | - width: SysSize.avatar, | 25 | + decoration: BoxDecoration( |
| 19 | - margin: EdgeInsets.only( | 26 | + color: Colors.black.withOpacity(.5), |
| 20 | - bottom: bottomPadding ?? 50, | 27 | + border: Border.all(color: Colors.grey, width: 0.1), // 边色与边宽度 |
| 21 | - right: 12, | 28 | + borderRadius: BorderRadius.circular(2.0), |
| 29 | + ), | ||
| 30 | + height: 220.0, | ||
| 31 | + margin: const EdgeInsets.all(10.0), | ||
| 32 | + child: InkWell( | ||
| 33 | + child: ClipRect( | ||
| 34 | + child: BackdropFilter( | ||
| 35 | + filter: ImageFilter.blur( | ||
| 36 | + sigmaX: 10.0, | ||
| 37 | + sigmaY: 10.0, | ||
| 22 | ), | 38 | ), |
| 23 | - child: Column( | ||
| 24 | - mainAxisAlignment: MainAxisAlignment.end, | ||
| 25 | - crossAxisAlignment: CrossAxisAlignment.end, | ||
| 26 | - children: <Widget>[ | ||
| 27 | - InkWell( | ||
| 28 | child: Container( | 39 | child: Container( |
| 29 | - child: Text( | 40 | + decoration: BoxDecoration( |
| 30 | - desc ?? '#一言 临境', | 41 | + color: Colors.grey.shade200.withOpacity(0.1), |
| 31 | - style: StandardTextStyle.normal, | ||
| 32 | ), | 42 | ), |
| 43 | + child: Padding( | ||
| 44 | + padding: const EdgeInsets.all(10.0), | ||
| 45 | + child: Column( | ||
| 46 | + children: [ | ||
| 47 | + Text( | ||
| 48 | + title ?? '每日一言', | ||
| 49 | + style: const TextStyle(fontSize: 28.0), | ||
| 33 | ), | 50 | ), |
| 34 | - onTap: (){ | 51 | + Gaps.vGap10, |
| 35 | - onShowDetail; | 52 | + Text( |
| 36 | - }, | 53 | + poem ?? '#一言 临境', |
| 54 | + style: const TextStyle( | ||
| 55 | + fontFamily: "ZCOOLXiaoWei", fontSize: 24.0), | ||
| 37 | ), | 56 | ), |
| 38 | - Container( | 57 | + Text( |
| 39 | - width: SysSize.avatar, | 58 | + author ?? '诗人', |
| 40 | - height: SysSize.avatar, | 59 | + style: const TextStyle(fontSize: 16.0), |
| 41 | - margin: const EdgeInsets.only(top: 10), | ||
| 42 | - decoration: BoxDecoration( | ||
| 43 | - borderRadius: BorderRadius.circular(SysSize.avatar / 2.0), | ||
| 44 | - // color: Colors.black.withOpacity(0.8), | ||
| 45 | ), | 60 | ), |
| 46 | - ) | ||
| 47 | ], | 61 | ], |
| 48 | ), | 62 | ), |
| 63 | + ), | ||
| 64 | + ), | ||
| 65 | + ), | ||
| 66 | + ), | ||
| 67 | + onTap: () { | ||
| 68 | + onShowDetail; | ||
| 69 | + }, | ||
| 70 | + ), | ||
| 49 | ); | 71 | ); |
| 50 | } | 72 | } |
| 51 | } | 73 | } | ... | ... |
| ... | @@ -74,7 +74,7 @@ class _TimelinesPageState extends State<TimelinesPage>{ | ... | @@ -74,7 +74,7 @@ class _TimelinesPageState extends State<TimelinesPage>{ |
| 74 | Opacity( | 74 | Opacity( |
| 75 | opacity: _opacity, | 75 | opacity: _opacity, |
| 76 | child: const CupertinoNavigationBar( | 76 | child: const CupertinoNavigationBar( |
| 77 | - middle: Text("朋友圈"), | 77 | + middle: Text("临境|附近|新鲜"), |
| 78 | 78 | ||
| 79 | ), | 79 | ), |
| 80 | ) | 80 | ) | ... | ... |
This diff is collapsed. Click to expand it.
| ... | @@ -168,6 +168,7 @@ flutter: | ... | @@ -168,6 +168,7 @@ flutter: |
| 168 | - assets/images/account/ | 168 | - assets/images/account/ |
| 169 | - assets/images/state/ | 169 | - assets/images/state/ |
| 170 | - assets/images/poem/ | 170 | - assets/images/poem/ |
| 171 | + - assets/images/category/ | ||
| 171 | - assets/data/Data.json | 172 | - assets/data/Data.json |
| 172 | - assets/data/friends/ | 173 | - assets/data/friends/ |
| 173 | 174 | ||
| ... | @@ -175,5 +176,12 @@ flutter: | ... | @@ -175,5 +176,12 @@ flutter: |
| 175 | - family: RobotoThin | 176 | - family: RobotoThin |
| 176 | fonts: | 177 | fonts: |
| 177 | - asset: assets/fonts/Roboto-Thin.ttf | 178 | - asset: assets/fonts/Roboto-Thin.ttf |
| 179 | + # 开源字体:https://fonts.google.com/ | ||
| 180 | + - family: LongCang | ||
| 181 | + fonts: | ||
| 182 | + - asset: assets/fonts/LongCang-Regular.ttf | ||
| 183 | + - family: ZCOOLXiaoWei | ||
| 184 | + fonts: | ||
| 185 | + - asset: assets/fonts/ZCOOLXiaoWei-Regular.ttf | ||
| 178 | flutter_intl: | 186 | flutter_intl: |
| 179 | enabled: true | 187 | enabled: true |
| ... | \ No newline at end of file | ... | \ No newline at end of file | ... | ... |
-
Please register or login to post a comment