mirror of
https://github.com/bggRGjQaUbCoE/PiliPlus.git
synced 2026-05-31 08:08:19 +08:00
BIN
assets/fonts/custom_icon.ttf
Normal file
BIN
assets/fonts/custom_icon.ttf
Normal file
Binary file not shown.
29
lib/common/widgets/custom_icon.dart
Normal file
29
lib/common/widgets/custom_icon.dart
Normal file
@@ -0,0 +1,29 @@
|
|||||||
|
// ignore_for_file: constant_identifier_names
|
||||||
|
|
||||||
|
import 'package:flutter/widgets.dart';
|
||||||
|
|
||||||
|
class CustomIcon {
|
||||||
|
static const _kFontFam = 'custom_icon';
|
||||||
|
|
||||||
|
static const IconData coin = IconData(0xe800, fontFamily: _kFontFam);
|
||||||
|
static const IconData dm_off = IconData(0xe801, fontFamily: _kFontFam);
|
||||||
|
static const IconData dm_on = IconData(0xe802, fontFamily: _kFontFam);
|
||||||
|
static const IconData dm_settings = IconData(0xe803, fontFamily: _kFontFam);
|
||||||
|
static const IconData dyn = IconData(0xe804, fontFamily: _kFontFam);
|
||||||
|
static const IconData fav = IconData(0xe805, fontFamily: _kFontFam);
|
||||||
|
static const IconData share = IconData(0xe806, fontFamily: _kFontFam);
|
||||||
|
static const IconData share_line = IconData(0xe807, fontFamily: _kFontFam);
|
||||||
|
static const IconData share_node = IconData(0xe808, fontFamily: _kFontFam);
|
||||||
|
static const IconData star_favorite_line =
|
||||||
|
IconData(0xe809, fontFamily: _kFontFam);
|
||||||
|
static const IconData thumbs_down = IconData(0xe80a, fontFamily: _kFontFam);
|
||||||
|
static const IconData thumbs_down_outline =
|
||||||
|
IconData(0xe80b, fontFamily: _kFontFam);
|
||||||
|
static const IconData thumbs_up = IconData(0xe80c, fontFamily: _kFontFam);
|
||||||
|
static const IconData thumbs_up_line =
|
||||||
|
IconData(0xe80d, fontFamily: _kFontFam);
|
||||||
|
static const IconData thumbs_up_outline =
|
||||||
|
IconData(0xe80e, fontFamily: _kFontFam);
|
||||||
|
static const IconData topic_tag = IconData(0xe80f, fontFamily: _kFontFam);
|
||||||
|
static const IconData watch_later = IconData(0xe810, fontFamily: _kFontFam);
|
||||||
|
}
|
||||||
@@ -1,4 +1,5 @@
|
|||||||
// 内容
|
// 内容
|
||||||
|
import 'package:PiliPlus/common/widgets/custom_icon.dart';
|
||||||
import 'package:PiliPlus/common/widgets/image/image_view.dart';
|
import 'package:PiliPlus/common/widgets/image/image_view.dart';
|
||||||
import 'package:PiliPlus/models/dynamics/result.dart';
|
import 'package:PiliPlus/models/dynamics/result.dart';
|
||||||
import 'package:PiliPlus/pages/dynamics/widgets/rich_node_panel.dart';
|
import 'package:PiliPlus/pages/dynamics/widgets/rich_node_panel.dart';
|
||||||
@@ -44,7 +45,7 @@ Widget content(
|
|||||||
child: Column(
|
child: Column(
|
||||||
crossAxisAlignment: CrossAxisAlignment.start,
|
crossAxisAlignment: CrossAxisAlignment.start,
|
||||||
children: [
|
children: [
|
||||||
if (item.modules.moduleDynamic?.topic != null) ...[
|
if (item.modules.moduleDynamic?.topic != null)
|
||||||
GestureDetector(
|
GestureDetector(
|
||||||
onTap: () {
|
onTap: () {
|
||||||
Get.toNamed(
|
Get.toNamed(
|
||||||
@@ -55,15 +56,29 @@ Widget content(
|
|||||||
},
|
},
|
||||||
);
|
);
|
||||||
},
|
},
|
||||||
child: Text(
|
child: Text.rich(
|
||||||
'#${item.modules.moduleDynamic!.topic!.name}',
|
TextSpan(
|
||||||
|
children: [
|
||||||
|
WidgetSpan(
|
||||||
|
alignment: PlaceholderAlignment.middle,
|
||||||
|
child: Padding(
|
||||||
|
padding: const EdgeInsets.only(right: 4),
|
||||||
|
child: Icon(
|
||||||
|
size: 18,
|
||||||
|
CustomIcon.topic_tag,
|
||||||
|
color: theme.colorScheme.primary,
|
||||||
|
),
|
||||||
|
),
|
||||||
|
),
|
||||||
|
TextSpan(text: item.modules.moduleDynamic!.topic!.name),
|
||||||
|
],
|
||||||
|
),
|
||||||
style: TextStyle(
|
style: TextStyle(
|
||||||
fontSize: source == 'detail' && !isSave ? 16 : 15,
|
fontSize: source == 'detail' && !isSave ? 16 : 15,
|
||||||
color: theme.colorScheme.primary,
|
color: theme.colorScheme.primary,
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
],
|
|
||||||
if (richNodes != null)
|
if (richNodes != null)
|
||||||
source == 'detail'
|
source == 'detail'
|
||||||
? SelectableText.rich(
|
? SelectableText.rich(
|
||||||
|
|||||||
@@ -1,5 +1,6 @@
|
|||||||
// 转发
|
// 转发
|
||||||
import 'package:PiliPlus/common/widgets/badge.dart';
|
import 'package:PiliPlus/common/widgets/badge.dart';
|
||||||
|
import 'package:PiliPlus/common/widgets/custom_icon.dart';
|
||||||
import 'package:PiliPlus/common/widgets/image/image_save.dart';
|
import 'package:PiliPlus/common/widgets/image/image_save.dart';
|
||||||
import 'package:PiliPlus/common/widgets/image/image_view.dart';
|
import 'package:PiliPlus/common/widgets/image/image_view.dart';
|
||||||
import 'package:PiliPlus/common/widgets/image/network_img_layer.dart';
|
import 'package:PiliPlus/common/widgets/image/network_img_layer.dart';
|
||||||
@@ -92,8 +93,8 @@ Widget forWard(
|
|||||||
),
|
),
|
||||||
],
|
],
|
||||||
),
|
),
|
||||||
const SizedBox(height: 2),
|
const SizedBox(height: 5),
|
||||||
if (item.modules.moduleDynamic?.topic != null)
|
if (item.modules.moduleDynamic?.topic != null) ...[
|
||||||
GestureDetector(
|
GestureDetector(
|
||||||
onTap: () {
|
onTap: () {
|
||||||
Get.toNamed(
|
Get.toNamed(
|
||||||
@@ -104,11 +105,28 @@ Widget forWard(
|
|||||||
},
|
},
|
||||||
);
|
);
|
||||||
},
|
},
|
||||||
child: Text(
|
child: Text.rich(
|
||||||
'#${item.modules.moduleDynamic!.topic!.name}',
|
TextSpan(
|
||||||
|
children: [
|
||||||
|
WidgetSpan(
|
||||||
|
alignment: PlaceholderAlignment.bottom,
|
||||||
|
child: Padding(
|
||||||
|
padding: const EdgeInsets.only(right: 4),
|
||||||
|
child: Icon(
|
||||||
|
size: 18,
|
||||||
|
CustomIcon.topic_tag,
|
||||||
|
color: theme.colorScheme.primary,
|
||||||
|
),
|
||||||
|
),
|
||||||
|
),
|
||||||
|
TextSpan(text: item.modules.moduleDynamic!.topic!.name),
|
||||||
|
],
|
||||||
|
),
|
||||||
style: TextStyle(color: theme.colorScheme.primary),
|
style: TextStyle(color: theme.colorScheme.primary),
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
|
const SizedBox(height: 5),
|
||||||
|
],
|
||||||
if (richNodes != null)
|
if (richNodes != null)
|
||||||
Text.rich(
|
Text.rich(
|
||||||
richNodes,
|
richNodes,
|
||||||
|
|||||||
@@ -4,6 +4,7 @@ import 'dart:math';
|
|||||||
import 'dart:ui';
|
import 'dart:ui';
|
||||||
|
|
||||||
import 'package:PiliPlus/common/constants.dart';
|
import 'package:PiliPlus/common/constants.dart';
|
||||||
|
import 'package:PiliPlus/common/widgets/custom_icon.dart';
|
||||||
import 'package:PiliPlus/common/widgets/scroll_physics.dart';
|
import 'package:PiliPlus/common/widgets/scroll_physics.dart';
|
||||||
import 'package:PiliPlus/grpc/bilibili/main/community/reply/v1.pb.dart'
|
import 'package:PiliPlus/grpc/bilibili/main/community/reply/v1.pb.dart'
|
||||||
show ReplyInfo;
|
show ReplyInfo;
|
||||||
@@ -56,7 +57,6 @@ import 'package:flutter/material.dart';
|
|||||||
import 'package:flutter/rendering.dart';
|
import 'package:flutter/rendering.dart';
|
||||||
import 'package:flutter/services.dart';
|
import 'package:flutter/services.dart';
|
||||||
import 'package:flutter_smart_dialog/flutter_smart_dialog.dart';
|
import 'package:flutter_smart_dialog/flutter_smart_dialog.dart';
|
||||||
import 'package:flutter_svg/svg.dart';
|
|
||||||
import 'package:font_awesome_flutter/font_awesome_flutter.dart';
|
import 'package:font_awesome_flutter/font_awesome_flutter.dart';
|
||||||
import 'package:get/get.dart';
|
import 'package:get/get.dart';
|
||||||
import 'package:hive/hive.dart';
|
import 'package:hive/hive.dart';
|
||||||
@@ -1590,18 +1590,15 @@ class _VideoDetailPageVState extends State<VideoDetailPageV>
|
|||||||
videoDetailController
|
videoDetailController
|
||||||
.plPlayerController.isOpenDanmu.value);
|
.plPlayerController.isOpenDanmu.value);
|
||||||
},
|
},
|
||||||
icon: SvgPicture.asset(
|
icon: Icon(
|
||||||
videoDetailController
|
videoDetailController
|
||||||
.plPlayerController.isOpenDanmu.value
|
.plPlayerController.isOpenDanmu.value
|
||||||
? 'assets/images/video/danmu_open.svg'
|
? CustomIcon.dm_on
|
||||||
: 'assets/images/video/danmu_close.svg',
|
: CustomIcon.dm_off,
|
||||||
colorFilter: ColorFilter.mode(
|
color: videoDetailController
|
||||||
videoDetailController
|
.plPlayerController.isOpenDanmu.value
|
||||||
.plPlayerController.isOpenDanmu.value
|
? themeData.colorScheme.secondary
|
||||||
? themeData.colorScheme.secondary
|
: themeData.colorScheme.outline,
|
||||||
: themeData.colorScheme.outline,
|
|
||||||
BlendMode.srcIn,
|
|
||||||
),
|
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
|
|||||||
@@ -285,6 +285,9 @@ flutter:
|
|||||||
- family: digital_id_num
|
- family: digital_id_num
|
||||||
fonts:
|
fonts:
|
||||||
- asset: assets/fonts/digital_id_num.ttf
|
- asset: assets/fonts/digital_id_num.ttf
|
||||||
|
- family: custom_icon
|
||||||
|
fonts:
|
||||||
|
- asset: assets/fonts/custom_icon.ttf
|
||||||
# - family: Jura-Bold
|
# - family: Jura-Bold
|
||||||
# fonts:
|
# fonts:
|
||||||
# - asset: assets/fonts/Jura-Bold.ttf
|
# - asset: assets/fonts/Jura-Bold.ttf
|
||||||
|
|||||||
Reference in New Issue
Block a user