diff --git a/lib/common/widgets/article_content.dart b/lib/common/widgets/article_content.dart index 85678454d..bab528a28 100644 --- a/lib/common/widgets/article_content.dart +++ b/lib/common/widgets/article_content.dart @@ -55,29 +55,22 @@ Widget articleContent({ ); } else if (item.pic != null) { return LayoutBuilder( - builder: (context, constraints) => GestureDetector( - onTap: () { - context.imageView( - initialPage: imgList.indexOf(item.pic!.pics!.first.url!), - imgList: imgList, - ); - // showDialog( - // useSafeArea: false, - // context: context, - // builder: (context) { - // return ImagePreview( - // initialPage: imgList.indexOf(item.pic!.pics!.first.url!), - // imgList: imgList, - // ); - // }, - // ); - }, - child: NetworkImgLayer( - width: constraints.maxWidth, - height: constraints.maxWidth * - item.pic!.pics!.first.height! / - item.pic!.pics!.first.width!, - src: item.pic!.pics!.first.url, + builder: (context, constraints) => Hero( + tag: item.pic!.pics!.first.url!, + child: GestureDetector( + onTap: () { + context.imageView( + initialPage: imgList.indexOf(item.pic!.pics!.first.url!), + imgList: imgList, + ); + }, + child: NetworkImgLayer( + width: constraints.maxWidth, + height: constraints.maxWidth * + item.pic!.pics!.first.height! / + item.pic!.pics!.first.width!, + src: item.pic!.pics!.first.url, + ), ), ), ); diff --git a/lib/common/widgets/html_render.dart b/lib/common/widgets/html_render.dart index 31d9e2508..dc932723f 100644 --- a/lib/common/widgets/html_render.dart +++ b/lib/common/widgets/html_render.dart @@ -40,32 +40,25 @@ Widget htmlRender({ // extensionContext.element!.previousElementSibling == null || // extensionContext.element!.nextElementSibling == null; // imgUrl = Utils().imageUrl(imgUrl!); - // return Image.network( - // imgUrl, + // return CachedNetworkImage( + // imageUrl: imgUrl, // width: isEmote ? 22 : null, // height: isEmote ? 22 : null, // ); - return GestureDetector( - onTap: () { - context.imageView( - imgList: [imgUrl], - ); - // showDialog( - // useSafeArea: false, - // context: context, - // builder: (context) { - // return ImagePreview( - // initialPage: 0, - // imgList: [imgUrl], - // ); - // }, - // ); - }, - child: NetworkImgLayer( - width: isEmote ? 22 : constrainedWidth, - height: isEmote ? 22 : 200, - src: imgUrl, - ignoreHeight: !isEmote, + return Hero( + tag: imgUrl, + child: GestureDetector( + onTap: () { + context.imageView( + imgList: [imgUrl], + ); + }, + child: NetworkImgLayer( + width: isEmote ? 22 : constrainedWidth, + height: isEmote ? 22 : 200, + src: imgUrl, + ignoreHeight: !isEmote, + ), ), ); } catch (err) { diff --git a/lib/common/widgets/imageview.dart b/lib/common/widgets/imageview.dart index 40a647b5a..cdd5facaa 100644 --- a/lib/common/widgets/imageview.dart +++ b/lib/common/widgets/imageview.dart @@ -65,16 +65,6 @@ Widget imageview( imgList: picArr.map((item) => item.url).toList(), onDismissed: onDismissed, ); - // showDialog( - // useSafeArea: false, - // context: context, - // builder: (context) { - // return ImagePreview( - // initialPage: index, - // imgList: picArr.map((item) => item.url).toList(), - // ); - // }, - // ); }, child: Stack( alignment: Alignment.center, diff --git a/lib/common/widgets/interactiveviewer_gallery/interactiveviewer_gallery.dart b/lib/common/widgets/interactiveviewer_gallery/interactiveviewer_gallery.dart index 752bae033..ac5948164 100644 --- a/lib/common/widgets/interactiveviewer_gallery/interactiveviewer_gallery.dart +++ b/lib/common/widgets/interactiveviewer_gallery/interactiveviewer_gallery.dart @@ -93,7 +93,7 @@ class _InteractiveviewerGalleryState extends State _quality = GStorage.setting.get(SettingBoxKey.previewQuality, defaultValue: 80); - _thumbList = List.filled(widget.sources.length, true); + _thumbList = List.generate(widget.sources.length, (_) => true); _pageController = PageController(initialPage: widget.initIndex); diff --git a/lib/common/widgets/list_sheet.dart b/lib/common/widgets/list_sheet.dart index b5be75f8c..1ee1839f1 100644 --- a/lib/common/widgets/list_sheet.dart +++ b/lib/common/widgets/list_sheet.dart @@ -71,10 +71,12 @@ class _ListSheetContentState extends State }); } itemScrollController = _isList - ? List.filled(widget.season.sections.length, ItemScrollController()) + ? List.generate( + widget.season.sections.length, (_) => ItemScrollController()) : [ItemScrollController()]; - reverse = - _isList ? List.filled(widget.season.sections.length, false) : [false]; + reverse = _isList + ? List.generate(widget.season.sections.length, (_) => false) + : [false]; WidgetsBinding.instance.addPostFrameCallback((_) { itemScrollController[_index].jumpTo(index: currentIndex); }); diff --git a/lib/main.dart b/lib/main.dart index 5fe7734cb..8c1b5f51d 100644 --- a/lib/main.dart +++ b/lib/main.dart @@ -1,6 +1,7 @@ import 'dart:io'; import 'package:PiliPalaX/utils/cache_manage.dart'; +import 'package:flex_seed_scheme/flex_seed_scheme.dart'; import 'package:flutter/services.dart'; import 'package:flutter_displaymode/flutter_displaymode.dart'; import 'package:flutter_localizations/flutter_localizations.dart'; @@ -110,8 +111,10 @@ class MyApp extends StatelessWidget { // 字体缩放大小 double textScale = setting.get(SettingBoxKey.defaultTextScale, defaultValue: 1.0); - DynamicSchemeVariant dynamicSchemeVariant = - DynamicSchemeVariant.values[GStorage.schemeVariant]; + // DynamicSchemeVariant dynamicSchemeVariant = + // DynamicSchemeVariant.values[GStorage.schemeVariant]; + FlexSchemeVariant variant = + FlexSchemeVariant.values[GStorage.schemeVariant]; // 强制设置高帧率 if (Platform.isAndroid) { @@ -139,15 +142,19 @@ class MyApp extends StatelessWidget { darkColorScheme = darkDynamic.harmonized(); } else { // dynamic取色失败,采用品牌色 - lightColorScheme = ColorScheme.fromSeed( - seedColor: brandColor, + lightColorScheme = SeedColorScheme.fromSeeds( + primaryKey: brandColor, brightness: Brightness.light, - dynamicSchemeVariant: dynamicSchemeVariant, + variant: variant, + // dynamicSchemeVariant: dynamicSchemeVariant, + // tones: FlexTones.soft(Brightness.light), ); - darkColorScheme = ColorScheme.fromSeed( - seedColor: brandColor, + darkColorScheme = SeedColorScheme.fromSeeds( + primaryKey: brandColor, brightness: Brightness.dark, - dynamicSchemeVariant: dynamicSchemeVariant, + variant: variant, + // dynamicSchemeVariant: dynamicSchemeVariant, + // tones: FlexTones.soft(Brightness.dark), ); } // 图片缓存 @@ -158,10 +165,13 @@ class MyApp extends StatelessWidget { theme: _getThemeData( colorScheme: lightColorScheme, isDynamic: lightDynamic != null && isDynamicColor, + variant: variant, ), darkTheme: _getThemeData( colorScheme: darkColorScheme, isDynamic: darkDynamic != null && isDynamicColor, + isDark: true, + variant: variant, ), themeMode: GStorage.themeMode, localizationsDelegates: const [ @@ -196,9 +206,9 @@ class MyApp extends StatelessWidget { ThemeData _getThemeData({ required ColorScheme colorScheme, required bool isDynamic, + bool isDark = false, + required FlexSchemeVariant variant, }) { - Color surfaceTintColor = - isDynamic ? colorScheme.surfaceTint : colorScheme.surfaceContainer; return ThemeData( colorScheme: colorScheme, useMaterial3: true, @@ -211,15 +221,17 @@ class MyApp extends StatelessWidget { titleTextStyle: TextStyle(fontSize: 16, color: colorScheme.onSurface), ), navigationBarTheme: NavigationBarThemeData( - surfaceTintColor: surfaceTintColor, + surfaceTintColor: isDynamic + ? colorScheme.surfaceTint + : isDark + ? colorScheme.surfaceTint + : null, ), snackBarTheme: SnackBarThemeData( actionTextColor: colorScheme.primary, backgroundColor: colorScheme.secondaryContainer, closeIconColor: colorScheme.secondary, - contentTextStyle: TextStyle( - color: colorScheme.secondary, - ), + contentTextStyle: TextStyle(color: colorScheme.secondary), elevation: 20, ), pageTransitionsTheme: const PageTransitionsTheme( @@ -230,15 +242,26 @@ class MyApp extends StatelessWidget { }, ), popupMenuTheme: PopupMenuThemeData( - surfaceTintColor: surfaceTintColor, + surfaceTintColor: + isDynamic || variant == FlexSchemeVariant.material3Legacy + ? isDark + ? colorScheme.surfaceTint + : null + : null, ), cardTheme: CardTheme( elevation: 1, - surfaceTintColor: surfaceTintColor, + surfaceTintColor: isDynamic + ? colorScheme.surfaceTint + : variant == FlexSchemeVariant.material3Legacy + ? isDark + ? colorScheme.surfaceTint + : null + : null, shadowColor: Colors.transparent, ), dialogTheme: DialogTheme( - surfaceTintColor: surfaceTintColor, + surfaceTintColor: isDark ? colorScheme.surfaceTint : null, ), progressIndicatorTheme: ProgressIndicatorThemeData( refreshBackgroundColor: colorScheme.onSecondary, diff --git a/lib/models/common/color_type.dart b/lib/models/common/color_type.dart index ced687ad8..6e858d7ef 100644 --- a/lib/models/common/color_type.dart +++ b/lib/models/common/color_type.dart @@ -1,8 +1,8 @@ import 'package:flutter/material.dart'; final List> colorThemeTypes = [ - {'color': const Color.fromARGB(255, 92, 182, 123), 'label': '默认绿'}, - {'color': const Color.fromARGB(255, 251, 114, 153), 'label': '粉红色'}, + {'color': const Color(0xFF5CB67B), 'label': '默认绿'}, + {'color': const Color(0xFFFF7299), 'label': '粉红色'}, {'color': Colors.red, 'label': '红色'}, {'color': Colors.orange, 'label': '橙色'}, {'color': Colors.amber, 'label': '琥珀色'}, diff --git a/lib/pages/member/new/widget/user_info_card.dart b/lib/pages/member/new/widget/user_info_card.dart index c32bd7bc8..6318b21b8 100644 --- a/lib/pages/member/new/widget/user_info_card.dart +++ b/lib/pages/member/new/widget/user_info_card.dart @@ -69,34 +69,27 @@ class UserInfoCard extends StatelessWidget { ? images.imgUrl?.http2https : images.nightImgurl?.http2https) : images.imgUrl?.http2https; - return GestureDetector( - onTap: () { - context.imageView( - imgList: [imgUrl ?? ''], - ); - // showDialog( - // useSafeArea: false, - // context: context, - // builder: (context) { - // return ImagePreview( - // initialPage: 0, - // imgList: [imgUrl ?? ''], - // ); - // }, - // ); - }, - child: CachedNetworkImage( - imageUrl: imgUrl ?? '', - width: double.infinity, - height: 135, - imageBuilder: (context, imageProvider) => Container( - decoration: BoxDecoration( - image: DecorationImage( - image: imageProvider, - fit: BoxFit.cover, - colorFilter: ColorFilter.mode( - darken ? const Color(0x8D000000) : const Color(0x5DFFFFFF), - darken ? BlendMode.darken : BlendMode.lighten, + return Hero( + tag: imgUrl ?? 'bgTag', + child: GestureDetector( + onTap: () { + context.imageView( + imgList: [imgUrl ?? 'bgTag'], + ); + }, + child: CachedNetworkImage( + imageUrl: imgUrl ?? '', + width: double.infinity, + height: 135, + imageBuilder: (context, imageProvider) => Container( + decoration: BoxDecoration( + image: DecorationImage( + image: imageProvider, + fit: BoxFit.cover, + colorFilter: ColorFilter.mode( + darken ? const Color(0x8D000000) : const Color(0x5DFFFFFF), + darken ? BlendMode.darken : BlendMode.lighten, + ), ), ), ), @@ -134,13 +127,13 @@ class UserInfoCard extends StatelessWidget { semanticLabel: '等级${card.levelInfo?.currentLevel}', ), if (card.vip?.vipStatus == 1) - Image.network( - card.vip!.label!.image!, + CachedNetworkImage( + imageUrl: card.vip!.label!.image!, height: 20, ), if (card.nameplate?.image?.isNotEmpty == true) - Image.network( - card.nameplate!.image!, + CachedNetworkImage( + imageUrl: card.nameplate!.image!, height: 20, ), // GestureDetector( @@ -416,35 +409,28 @@ class UserInfoCard extends StatelessWidget { ), ); - _buildAvatar(BuildContext context) => GestureDetector( - onTap: () { - context.imageView( - imgList: [card.face ?? ''], - ); - // showDialog( - // useSafeArea: false, - // context: context, - // builder: (context) { - // return ImagePreview( - // initialPage: 0, - // imgList: [card.face ?? ''], - // ); - // }, - // ); - }, - child: Container( - decoration: BoxDecoration( - border: Border.all( - width: 2.5, - color: Theme.of(context).colorScheme.surface, + _buildAvatar(BuildContext context) => Hero( + tag: card.face ?? 'avatarTag', + child: GestureDetector( + onTap: () { + context.imageView( + imgList: [card.face ?? 'avatarTag'], + ); + }, + child: Container( + decoration: BoxDecoration( + border: Border.all( + width: 2.5, + color: Theme.of(context).colorScheme.surface, + ), + shape: BoxShape.circle, + ), + child: NetworkImgLayer( + src: card.face, + type: 'avatar', + width: 80, + height: 80, ), - shape: BoxShape.circle, - ), - child: NetworkImgLayer( - src: card.face, - type: 'avatar', - width: 80, - height: 80, ), ), ); diff --git a/lib/pages/member/view.dart b/lib/pages/member/view.dart index 286a24614..3caa222fd 100644 --- a/lib/pages/member/view.dart +++ b/lib/pages/member/view.dart @@ -2,6 +2,7 @@ import 'dart:async'; import 'package:PiliPalaX/http/member.dart'; import 'package:PiliPalaX/utils/extension.dart'; +import 'package:cached_network_image/cached_network_image.dart'; import 'package:flutter/material.dart'; import 'package:flutter/services.dart'; import 'package:flutter_smart_dialog/flutter_smart_dialog.dart'; @@ -432,22 +433,22 @@ class _MemberPageState extends State if (_memberController .memberInfo.value.vip?.label?['img_label_uri_hans'] != '') - Image.network( - _memberController + CachedNetworkImage( + imageUrl: _memberController .memberInfo.value.vip!.label!['img_label_uri_hans'], height: 20, - semanticLabel: - _memberController.memberInfo.value.vip!.label!['text'], + // semanticLabel: + // _memberController.memberInfo.value.vip!.label!['text'], ) else if (_memberController.memberInfo.value.vip ?.label?['img_label_uri_hans_static'] != '') - Image.network( - _memberController.memberInfo.value.vip! + CachedNetworkImage( + imageUrl: _memberController.memberInfo.value.vip! .label!['img_label_uri_hans_static'], height: 20, - semanticLabel: - _memberController.memberInfo.value.vip!.label!['text'], + // semanticLabel: + // _memberController.memberInfo.value.vip!.label!['text'], ), ], const SizedBox(width: 5), diff --git a/lib/pages/member/widgets/profile.dart b/lib/pages/member/widgets/profile.dart index 493e242de..f40da039d 100644 --- a/lib/pages/member/widgets/profile.dart +++ b/lib/pages/member/widgets/profile.dart @@ -23,7 +23,7 @@ class ProfilePanel extends StatelessWidget { return Row( children: [ Hero( - tag: ctr.heroTag!, + tag: !loadingStatus ? memberInfo.face : ctr.face.value, child: Stack( children: [ GestureDetector( @@ -32,15 +32,6 @@ class ProfilePanel extends StatelessWidget { !loadingStatus ? memberInfo.face : ctr.face.value ], ), - // showDialog( - // useSafeArea: false, - // context: context, - // builder: (context) { - // return ImagePreview(initialPage: 0, imgList: [ - // !loadingStatus ? memberInfo.face : ctr.face.value - // ]); - // }, - // ), child: NetworkImgLayer( width: 90, height: 90, diff --git a/lib/pages/search/widgets/search_text.dart b/lib/pages/search/widgets/search_text.dart index c4bd93022..5e0af0516 100644 --- a/lib/pages/search/widgets/search_text.dart +++ b/lib/pages/search/widgets/search_text.dart @@ -22,8 +22,7 @@ class SearchText extends StatelessWidget { @override Widget build(BuildContext context) { return Material( - color: bgColor ?? - Theme.of(context).colorScheme.surfaceVariant.withOpacity(0.5), + color: bgColor ?? Theme.of(context).colorScheme.onInverseSurface, borderRadius: BorderRadius.circular(6), child: Padding( padding: EdgeInsets.zero, diff --git a/lib/pages/search_result/controller.dart b/lib/pages/search_result/controller.dart index dec609aab..c356d65bd 100644 --- a/lib/pages/search_result/controller.dart +++ b/lib/pages/search_result/controller.dart @@ -3,7 +3,7 @@ import 'package:get/get.dart'; class SearchResultController extends GetxController { String? keyword; - RxList count = List.filled(5, -1).toList().obs; + RxList count = List.generate(5, (_) => -1).toList().obs; @override void onInit() { diff --git a/lib/pages/setting/pages/color_select.dart b/lib/pages/setting/pages/color_select.dart index 04262bbfb..b8380787e 100644 --- a/lib/pages/setting/pages/color_select.dart +++ b/lib/pages/setting/pages/color_select.dart @@ -1,34 +1,35 @@ +import 'package:flex_seed_scheme/flex_seed_scheme.dart'; import 'package:flutter/material.dart'; import 'package:get/get.dart'; import 'package:hive/hive.dart'; import 'package:PiliPalaX/models/common/color_type.dart'; import 'package:PiliPalaX/utils/storage.dart'; -extension _SchemeExt on DynamicSchemeVariant { - String get title => [ - '色调点', //tonalSpot - '富达', //fidelity - '单色', //monochrome - '中性的', //neutral - '充满活力', //vibrant - '富有表现力', //expressive - '内容', //content - '彩虹', //rainbow - '水果沙拉', //fruitSalad - ][index]; - // from ImageToolbox - String get subTitle => [ - '默认调色板样式,它允许自定义所有四种颜色,其他允许您仅设置关键颜色', //tonalSpot - '与内容方案非常相似的方案', //fidelity - '单色主题,颜色纯黑/白/灰', //monochrome - '色彩比单色稍多的风格', //neutral - '响亮的主题,主要调色板的色彩度最大,其他调色板的色彩度增加', //vibrant - '有趣的主题 - 源颜色的色调不会出现在主题中', //expressive - '将源颜色放置在Scheme.primaryContainer中的方案', //content - '有趣的主题 - 源颜色的色调不会出现在主题中', //rainbow - '有趣的主题 - 源颜色的色调不会出现在主题中', //fruitSalad - ][index]; -} +// extension _SchemeExt on DynamicSchemeVariant { +// String get title => [ +// '色调点', //tonalSpot +// '富达', //fidelity +// '单色', //monochrome +// '中性的', //neutral +// '充满活力', //vibrant +// '富有表现力', //expressive +// '内容', //content +// '彩虹', //rainbow +// '水果沙拉', //fruitSalad +// ][index]; +// // from ImageToolbox +// String get subTitle => [ +// '默认调色板样式,它允许自定义所有四种颜色,其他允许您仅设置关键颜色', //tonalSpot +// '与内容方案非常相似的方案', //fidelity +// '单色主题,颜色纯黑/白/灰', //monochrome +// '色彩比单色稍多的风格', //neutral +// '响亮的主题,主要调色板的色彩度最大,其他调色板的色彩度增加', //vibrant +// '有趣的主题 - 源颜色的色调不会出现在主题中', //expressive +// '将源颜色放置在Scheme.primaryContainer中的方案', //content +// '有趣的主题 - 源颜色的色调不会出现在主题中', //rainbow +// '有趣的主题 - 源颜色的色调不会出现在主题中', //fruitSalad +// ][index]; +// } class ColorSelectPage extends StatefulWidget { const ColorSelectPage({super.key}); @@ -60,8 +61,8 @@ List generateItems(int count) { class _ColorSelectPageState extends State { final ColorSelectController ctr = Get.put(ColorSelectController()); - DynamicSchemeVariant _dynamicSchemeVariant = - DynamicSchemeVariant.values[GStorage.schemeVariant]; + FlexSchemeVariant _dynamicSchemeVariant = + FlexSchemeVariant.values[GStorage.schemeVariant]; @override Widget build(BuildContext context) { @@ -78,7 +79,7 @@ class _ColorSelectPageState extends State { child: Icon(Icons.palette_outlined), ), subtitle: Text( - _dynamicSchemeVariant.subTitle, + _dynamicSchemeVariant.description, style: TextStyle(fontSize: 12), ), trailing: PopupMenuButton( @@ -90,17 +91,17 @@ class _ColorSelectPageState extends State { (context as Element).markNeedsBuild(); Get.forceAppUpdate(); }, - itemBuilder: (context) => DynamicSchemeVariant.values - .map((item) => PopupMenuItem( + itemBuilder: (context) => FlexSchemeVariant.values + .map((item) => PopupMenuItem( value: item, - child: Text(item.title), + child: Text(item.variantName), )) .toList(), child: Row( mainAxisSize: MainAxisSize.min, children: [ Text( - _dynamicSchemeVariant.title, + _dynamicSchemeVariant.variantName, style: TextStyle( height: 1, fontSize: 13, diff --git a/lib/pages/video/detail/introduction/widgets/create_fav_page.dart b/lib/pages/video/detail/introduction/widgets/create_fav_page.dart index 10837016b..1e3390c62 100644 --- a/lib/pages/video/detail/introduction/widgets/create_fav_page.dart +++ b/lib/pages/video/detail/introduction/widgets/create_fav_page.dart @@ -2,6 +2,7 @@ import 'package:PiliPalaX/common/widgets/http_error.dart'; import 'package:PiliPalaX/http/msg.dart'; import 'package:PiliPalaX/http/user.dart'; import 'package:PiliPalaX/utils/utils.dart'; +import 'package:cached_network_image/cached_network_image.dart'; import 'package:easy_debounce/easy_throttle.dart'; import 'package:flutter/material.dart'; import 'package:flutter/services.dart'; @@ -233,8 +234,8 @@ class _CreateFavPageState extends State { builder: (context, constraints) { return ClipRRect( borderRadius: BorderRadius.circular(6), - child: Image.network( - _cover!, + child: CachedNetworkImage( + imageUrl: _cover!, height: constraints.maxHeight, width: constraints.maxHeight * 16 / 9, fit: BoxFit.cover, diff --git a/lib/pages/video/detail/reply/widgets/reply_item.dart b/lib/pages/video/detail/reply/widgets/reply_item.dart index add24b3ff..752586efa 100644 --- a/lib/pages/video/detail/reply/widgets/reply_item.dart +++ b/lib/pages/video/detail/reply/widgets/reply_item.dart @@ -3,6 +3,7 @@ import 'dart:math'; import 'package:PiliPalaX/common/widgets/imageview.dart'; import 'package:PiliPalaX/http/video.dart'; import 'package:PiliPalaX/utils/extension.dart'; +import 'package:cached_network_image/cached_network_image.dart'; import 'package:flutter/gestures.dart'; import 'package:flutter/material.dart'; import 'package:flutter/services.dart'; @@ -763,8 +764,8 @@ class ReplyItem extends StatelessWidget { [ if (content.jumpUrl[matchStr]?['prefix_icon'] != null) ...[ WidgetSpan( - child: Image.network( - content.jumpUrl[matchStr]['prefix_icon'], + child: CachedNetworkImage( + imageUrl: content.jumpUrl[matchStr]['prefix_icon'], height: 19, color: Theme.of(context).colorScheme.primary, ), @@ -909,8 +910,8 @@ class ReplyItem extends StatelessWidget { [ if (content.jumpUrl[patternStr]?['prefix_icon'] != null) ...[ WidgetSpan( - child: Image.network( - content.jumpUrl[patternStr]['prefix_icon'], + child: CachedNetworkImage( + imageUrl: content.jumpUrl[patternStr]['prefix_icon'], height: 19, color: Theme.of(context).colorScheme.primary, ), diff --git a/lib/pages/video/detail/reply/widgets/reply_item_grpc.dart b/lib/pages/video/detail/reply/widgets/reply_item_grpc.dart index f5b010915..d7cc8bb76 100644 --- a/lib/pages/video/detail/reply/widgets/reply_item_grpc.dart +++ b/lib/pages/video/detail/reply/widgets/reply_item_grpc.dart @@ -6,6 +6,7 @@ import 'package:PiliPalaX/grpc/app/main/community/reply/v1/reply.pb.dart'; import 'package:PiliPalaX/http/video.dart'; import 'package:PiliPalaX/pages/video/detail/reply/widgets/zan_grpc.dart'; import 'package:PiliPalaX/utils/extension.dart'; +import 'package:cached_network_image/cached_network_image.dart'; import 'package:flutter/gestures.dart'; import 'package:flutter/material.dart'; import 'package:flutter/services.dart'; @@ -786,8 +787,8 @@ class ReplyItemGrpc extends StatelessWidget { [ if (content.url[matchStr]?.hasPrefixIcon() == true) ...[ WidgetSpan( - child: Image.network( - content.url[matchStr]!.prefixIcon, + child: CachedNetworkImage( + imageUrl: content.url[matchStr]!.prefixIcon, height: 19, color: Theme.of(context).colorScheme.primary, ), @@ -946,8 +947,8 @@ class ReplyItemGrpc extends StatelessWidget { [ if (content.url[patternStr]?.hasPrefixIcon() == true) ...[ WidgetSpan( - child: Image.network( - content.url[patternStr]!.prefixIcon, + child: CachedNetworkImage( + imageUrl: content.url[patternStr]!.prefixIcon, height: 19, color: Theme.of(context).colorScheme.primary, ), diff --git a/lib/pages/video/detail/view.dart b/lib/pages/video/detail/view.dart index ff538d960..830320281 100644 --- a/lib/pages/video/detail/view.dart +++ b/lib/pages/video/detail/view.dart @@ -1168,8 +1168,14 @@ class _VideoDetailPageState extends State padding: WidgetStateProperty.all(EdgeInsets.zero), ), onPressed: videoDetailController.showShootDanmakuSheet, - child: - const Text('发弹幕', style: TextStyle(fontSize: 12)), + child: Text( + '发弹幕', + style: TextStyle( + fontSize: 12, + color: + Theme.of(context).colorScheme.onSurfaceVariant, + ), + ), ), ), SizedBox( diff --git a/lib/utils/storage.dart b/lib/utils/storage.dart index 54998e14c..51734eb1c 100644 --- a/lib/utils/storage.dart +++ b/lib/utils/storage.dart @@ -55,7 +55,7 @@ class GStorage { static List get blockColor { List list = setting.get( SettingBoxKey.blockColor, - defaultValue: List.filled(SegmentType.values.length, ''), + defaultValue: List.generate(SegmentType.values.length, (_) => ''), ); return SegmentType.values .map((item) => list[item.index].isNotEmpty @@ -94,7 +94,7 @@ class GStorage { setting.get(SettingBoxKey.dynamicPeriod, defaultValue: 5); static int get schemeVariant => - setting.get(SettingBoxKey.schemeVariant, defaultValue: 0); + setting.get(SettingBoxKey.schemeVariant, defaultValue: 10); static double get danmakuFontScaleFS => setting.get(SettingBoxKey.danmakuFontScaleFS, defaultValue: 1.2); diff --git a/pubspec.lock b/pubspec.lock index ff3da9b39..906f330e5 100644 --- a/pubspec.lock +++ b/pubspec.lock @@ -600,6 +600,14 @@ packages: url: "https://pub.dev" source: hosted version: "1.1.1" + flex_seed_scheme: + dependency: "direct main" + description: + name: flex_seed_scheme + sha256: "7639d2c86268eff84a909026eb169f008064af0fb3696a651b24b0fa24a40334" + url: "https://pub.dev" + source: hosted + version: "3.4.1" floating: dependency: "direct main" description: diff --git a/pubspec.yaml b/pubspec.yaml index aabdb2fec..197e4563b 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -169,6 +169,7 @@ dependencies: #解压直播消息 brotli: ^0.6.0 expandable: ^5.0.1 + flex_seed_scheme: ^3.4.1 dependency_overrides: screen_brightness: ^2.0.0+2