mirror of
https://github.com/bggRGjQaUbCoE/PiliPlus.git
synced 2026-04-20 11:08:03 +08:00
@@ -1,10 +1,9 @@
|
||||
import 'package:PiliPlus/common/widgets/flutter/dyn/text_button.dart';
|
||||
import 'package:PiliPlus/models/dynamics/result.dart';
|
||||
import 'package:PiliPlus/pages/dynamics_repost/view.dart';
|
||||
import 'package:PiliPlus/utils/num_utils.dart';
|
||||
import 'package:PiliPlus/utils/page_utils.dart';
|
||||
import 'package:PiliPlus/utils/request_utils.dart';
|
||||
import 'package:flutter/material.dart' hide TextButton;
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:font_awesome_flutter/font_awesome_flutter.dart';
|
||||
|
||||
class ActionPanel extends StatelessWidget {
|
||||
|
||||
@@ -1,5 +1,4 @@
|
||||
import 'package:PiliPlus/common/constants.dart';
|
||||
import 'package:PiliPlus/common/widgets/flutter/dyn/ink_well.dart';
|
||||
import 'package:PiliPlus/common/widgets/gesture/tap_gesture_recognizer.dart';
|
||||
import 'package:PiliPlus/common/widgets/image/network_img_layer.dart';
|
||||
import 'package:PiliPlus/http/dynamics.dart';
|
||||
@@ -9,7 +8,7 @@ import 'package:PiliPlus/pages/dynamics/widgets/vote.dart';
|
||||
import 'package:PiliPlus/utils/app_scheme.dart';
|
||||
import 'package:PiliPlus/utils/num_utils.dart';
|
||||
import 'package:flutter/foundation.dart' show kDebugMode;
|
||||
import 'package:flutter/material.dart' hide InkWell;
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:get/get.dart';
|
||||
|
||||
Widget addWidget(
|
||||
|
||||
@@ -2,7 +2,6 @@ import 'dart:math';
|
||||
|
||||
import 'package:PiliPlus/common/constants.dart';
|
||||
import 'package:PiliPlus/common/widgets/dialog/report.dart';
|
||||
import 'package:PiliPlus/common/widgets/flutter/dyn/ink_well.dart';
|
||||
import 'package:PiliPlus/common/widgets/pendant_avatar.dart';
|
||||
import 'package:PiliPlus/http/constants.dart';
|
||||
import 'package:PiliPlus/http/loading_state.dart';
|
||||
@@ -24,7 +23,7 @@ import 'package:PiliPlus/utils/request_utils.dart';
|
||||
import 'package:PiliPlus/utils/utils.dart';
|
||||
import 'package:cached_network_image/cached_network_image.dart';
|
||||
import 'package:flutter/foundation.dart' show kDebugMode;
|
||||
import 'package:flutter/material.dart' hide InkWell;
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:flutter_smart_dialog/flutter_smart_dialog.dart';
|
||||
import 'package:get/get.dart';
|
||||
|
||||
|
||||
@@ -7,10 +7,9 @@ Widget blockedItem(
|
||||
BuildContext context, {
|
||||
required ThemeData theme,
|
||||
required ModuleBlocked blocked,
|
||||
required double maxWidth,
|
||||
}) {
|
||||
return Padding(
|
||||
padding: const EdgeInsets.symmetric(horizontal: 13, vertical: 1),
|
||||
child: moduleBlockedItem(context, theme, blocked, maxWidth - 26),
|
||||
child: moduleBlockedItem(context, theme, blocked),
|
||||
);
|
||||
}
|
||||
|
||||
@@ -15,16 +15,11 @@ Widget content(
|
||||
required DynamicItemModel item,
|
||||
required bool isSave,
|
||||
required bool isDetail,
|
||||
required double maxWidth,
|
||||
}) {
|
||||
if (floor == 1) {
|
||||
maxWidth -= 24;
|
||||
}
|
||||
TextSpan? richNodes = richNode(
|
||||
context,
|
||||
theme: theme,
|
||||
item: item,
|
||||
maxWidth: maxWidth,
|
||||
);
|
||||
final moduleDynamic = item.modules.moduleDynamic;
|
||||
final pics = moduleDynamic?.major?.opus?.pics;
|
||||
|
||||
@@ -12,7 +12,6 @@ List<Widget> dynContent(
|
||||
required DynamicItemModel item,
|
||||
required bool isSave,
|
||||
required bool isDetail,
|
||||
required double maxWidth,
|
||||
}) {
|
||||
final moduleDynamic = item.modules.moduleDynamic;
|
||||
return [
|
||||
@@ -24,7 +23,6 @@ List<Widget> dynContent(
|
||||
isDetail: isDetail,
|
||||
item: item,
|
||||
floor: floor,
|
||||
maxWidth: maxWidth,
|
||||
),
|
||||
module(
|
||||
context,
|
||||
@@ -33,7 +31,6 @@ List<Widget> dynContent(
|
||||
isDetail: isDetail,
|
||||
item: item,
|
||||
floor: floor,
|
||||
maxWidth: maxWidth,
|
||||
),
|
||||
if (moduleDynamic?.additional case final additional?)
|
||||
addWidget(
|
||||
@@ -44,6 +41,6 @@ List<Widget> dynContent(
|
||||
floor: floor,
|
||||
),
|
||||
if (moduleDynamic?.major?.blocked case final blocked?)
|
||||
blockedItem(context, theme: theme, blocked: blocked, maxWidth: maxWidth),
|
||||
blockedItem(context, theme: theme, blocked: blocked),
|
||||
];
|
||||
}
|
||||
|
||||
@@ -1,5 +1,4 @@
|
||||
import 'package:PiliPlus/common/widgets/avatars.dart';
|
||||
import 'package:PiliPlus/common/widgets/flutter/dyn/ink_well.dart';
|
||||
import 'package:PiliPlus/common/widgets/image/image_save.dart';
|
||||
import 'package:PiliPlus/http/loading_state.dart';
|
||||
import 'package:PiliPlus/models/dynamics/result.dart';
|
||||
@@ -10,11 +9,10 @@ import 'package:PiliPlus/pages/dynamics/widgets/interaction.dart';
|
||||
import 'package:PiliPlus/utils/extension/theme_ext.dart';
|
||||
import 'package:PiliPlus/utils/page_utils.dart';
|
||||
import 'package:PiliPlus/utils/platform_utils.dart';
|
||||
import 'package:flutter/material.dart' hide InkWell;
|
||||
import 'package:flutter/material.dart';
|
||||
|
||||
class DynamicPanel extends StatelessWidget {
|
||||
final DynamicItemModel item;
|
||||
final double maxWidth;
|
||||
final bool isDetail;
|
||||
final ValueChanged<Object>? onRemove;
|
||||
final bool isSave;
|
||||
@@ -30,7 +28,6 @@ class DynamicPanel extends StatelessWidget {
|
||||
const DynamicPanel({
|
||||
super.key,
|
||||
required this.item,
|
||||
required this.maxWidth,
|
||||
this.isDetail = false,
|
||||
this.onRemove,
|
||||
this.isSave = false,
|
||||
@@ -99,7 +96,6 @@ class DynamicPanel extends StatelessWidget {
|
||||
isDetail: isDetail,
|
||||
item: item,
|
||||
floor: 1,
|
||||
maxWidth: maxWidth,
|
||||
),
|
||||
const SizedBox(height: 2),
|
||||
if (!isDetail) ...[
|
||||
|
||||
@@ -1,4 +1,3 @@
|
||||
import 'package:PiliPlus/common/widgets/flutter/dyn/ink_well.dart';
|
||||
import 'package:PiliPlus/common/widgets/image/image_save.dart';
|
||||
import 'package:PiliPlus/models/dynamics/result.dart';
|
||||
import 'package:PiliPlus/pages/dynamics/widgets/dyn_content.dart';
|
||||
@@ -6,7 +5,7 @@ import 'package:PiliPlus/pages/dynamics/widgets/module_panel.dart';
|
||||
import 'package:PiliPlus/utils/date_utils.dart';
|
||||
import 'package:PiliPlus/utils/page_utils.dart';
|
||||
import 'package:PiliPlus/utils/platform_utils.dart';
|
||||
import 'package:flutter/material.dart' hide InkWell;
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:get/get.dart';
|
||||
|
||||
Widget forwardPanel(
|
||||
@@ -16,7 +15,6 @@ Widget forwardPanel(
|
||||
required DynamicItemModel orig,
|
||||
required bool isSave,
|
||||
required bool isDetail,
|
||||
required double maxWidth,
|
||||
}) {
|
||||
final moduleDynamic = orig.modules.moduleDynamic;
|
||||
final major = moduleDynamic?.major;
|
||||
@@ -44,7 +42,6 @@ Widget forwardPanel(
|
||||
isDetail: isDetail,
|
||||
item: orig,
|
||||
floor: floor + 1,
|
||||
maxWidth: maxWidth - 30,
|
||||
),
|
||||
],
|
||||
);
|
||||
|
||||
@@ -8,7 +8,6 @@ Widget livePanel(
|
||||
required ThemeData theme,
|
||||
required DynamicItemModel item,
|
||||
required bool isDetail,
|
||||
required double maxWidth,
|
||||
Function(List<String>, int)? callback,
|
||||
}) {
|
||||
DynamicLive2Model? live = item.modules.moduleDynamic!.major!.live;
|
||||
|
||||
@@ -1,10 +1,11 @@
|
||||
import 'package:PiliPlus/common/constants.dart';
|
||||
import 'package:PiliPlus/common/widgets/badge.dart';
|
||||
import 'package:PiliPlus/common/widgets/flutter/layout_builder.dart';
|
||||
import 'package:PiliPlus/common/widgets/image/network_img_layer.dart';
|
||||
import 'package:PiliPlus/models/common/badge_type.dart';
|
||||
import 'package:PiliPlus/models/dynamics/result.dart';
|
||||
import 'package:PiliPlus/utils/extension/num_ext.dart';
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:flutter/material.dart' hide LayoutBuilder;
|
||||
|
||||
Widget livePanelSub(
|
||||
BuildContext context, {
|
||||
@@ -12,7 +13,6 @@ Widget livePanelSub(
|
||||
required ThemeData theme,
|
||||
required DynamicItemModel item,
|
||||
required bool isDetail,
|
||||
required double maxWidth,
|
||||
}) {
|
||||
LivePlayInfo? live = item
|
||||
.modules
|
||||
@@ -27,7 +27,6 @@ Widget livePanelSub(
|
||||
}
|
||||
EdgeInsets padding;
|
||||
if (floor == 1) {
|
||||
maxWidth -= 24;
|
||||
padding = const EdgeInsets.symmetric(horizontal: 12);
|
||||
} else {
|
||||
padding = EdgeInsets.zero;
|
||||
@@ -40,11 +39,13 @@ Widget livePanelSub(
|
||||
Stack(
|
||||
clipBehavior: Clip.none,
|
||||
children: [
|
||||
NetworkImgLayer(
|
||||
width: maxWidth,
|
||||
height: maxWidth / StyleString.aspectRatio,
|
||||
src: live.cover,
|
||||
quality: 40,
|
||||
LayoutBuilder(
|
||||
builder: (context, constraints) => NetworkImgLayer(
|
||||
width: constraints.maxWidth,
|
||||
height: constraints.maxWidth / StyleString.aspectRatio,
|
||||
src: live.cover,
|
||||
quality: 40,
|
||||
),
|
||||
),
|
||||
PBadge(
|
||||
text: live.watchedShow?.textLarge,
|
||||
|
||||
@@ -1,10 +1,11 @@
|
||||
import 'package:PiliPlus/common/constants.dart';
|
||||
import 'package:PiliPlus/common/widgets/badge.dart';
|
||||
import 'package:PiliPlus/common/widgets/flutter/layout_builder.dart';
|
||||
import 'package:PiliPlus/common/widgets/image/network_img_layer.dart';
|
||||
import 'package:PiliPlus/models/common/badge_type.dart';
|
||||
import 'package:PiliPlus/models/dynamics/result.dart';
|
||||
import 'package:PiliPlus/utils/extension/num_ext.dart';
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:flutter/material.dart' hide LayoutBuilder;
|
||||
|
||||
Widget liveRcmdPanel(
|
||||
BuildContext context, {
|
||||
@@ -12,7 +13,6 @@ Widget liveRcmdPanel(
|
||||
required ThemeData theme,
|
||||
required DynamicItemModel item,
|
||||
required bool isDetail,
|
||||
required double maxWidth,
|
||||
Function(List<String>, int)? callback,
|
||||
}) {
|
||||
DynamicLiveModel? liveRcmd = item.modules.moduleDynamic?.major?.liveRcmd;
|
||||
@@ -21,7 +21,6 @@ Widget liveRcmdPanel(
|
||||
}
|
||||
EdgeInsets padding;
|
||||
if (floor == 1) {
|
||||
maxWidth -= 24;
|
||||
padding = const EdgeInsets.symmetric(horizontal: 12);
|
||||
} else {
|
||||
padding = EdgeInsets.zero;
|
||||
@@ -34,11 +33,13 @@ Widget liveRcmdPanel(
|
||||
Stack(
|
||||
clipBehavior: Clip.none,
|
||||
children: [
|
||||
NetworkImgLayer(
|
||||
width: maxWidth,
|
||||
height: maxWidth / StyleString.aspectRatio,
|
||||
src: liveRcmd.cover,
|
||||
quality: 40,
|
||||
LayoutBuilder(
|
||||
builder: (context, constraints) => NetworkImgLayer(
|
||||
width: constraints.maxWidth,
|
||||
height: constraints.maxWidth / StyleString.aspectRatio,
|
||||
src: liveRcmd.cover,
|
||||
quality: 40,
|
||||
),
|
||||
),
|
||||
PBadge(
|
||||
text: liveRcmd.watchedShow?.textLarge,
|
||||
|
||||
@@ -1,6 +1,5 @@
|
||||
import 'package:PiliPlus/common/constants.dart';
|
||||
import 'package:PiliPlus/common/widgets/badge.dart';
|
||||
import 'package:PiliPlus/common/widgets/flutter/dyn/ink_well.dart';
|
||||
import 'package:PiliPlus/common/widgets/image/network_img_layer.dart';
|
||||
import 'package:PiliPlus/grpc/bilibili/app/listener/v1.pbenum.dart'
|
||||
show PlaylistSource;
|
||||
@@ -15,7 +14,7 @@ import 'package:PiliPlus/utils/extension/num_ext.dart';
|
||||
import 'package:PiliPlus/utils/image_utils.dart';
|
||||
import 'package:PiliPlus/utils/page_utils.dart';
|
||||
import 'package:cached_network_image/cached_network_image.dart';
|
||||
import 'package:flutter/material.dart' hide InkWell;
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:font_awesome_flutter/font_awesome_flutter.dart';
|
||||
|
||||
Widget noneWidget(ThemeData theme, String? tips) => Row(
|
||||
@@ -40,7 +39,6 @@ Widget module(
|
||||
required DynamicItemModel item,
|
||||
required bool isSave,
|
||||
required bool isDetail,
|
||||
required double maxWidth,
|
||||
}) {
|
||||
final moduleDynamic = item.modules.moduleDynamic;
|
||||
final major = moduleDynamic?.major;
|
||||
@@ -77,7 +75,6 @@ Widget module(
|
||||
floor: floor,
|
||||
isSave: isSave,
|
||||
isDetail: isDetail,
|
||||
maxWidth: maxWidth,
|
||||
);
|
||||
// 转发
|
||||
case 'DYNAMIC_TYPE_FORWARD':
|
||||
@@ -88,7 +85,6 @@ Widget module(
|
||||
orig: item.orig!,
|
||||
isDetail: isDetail,
|
||||
floor: floor + 1,
|
||||
maxWidth: maxWidth,
|
||||
);
|
||||
// 直播
|
||||
case 'DYNAMIC_TYPE_LIVE_RCMD':
|
||||
@@ -98,7 +94,6 @@ Widget module(
|
||||
isDetail: isDetail,
|
||||
item: item,
|
||||
floor: floor,
|
||||
maxWidth: maxWidth,
|
||||
);
|
||||
// 直播
|
||||
case 'DYNAMIC_TYPE_LIVE':
|
||||
@@ -108,7 +103,6 @@ Widget module(
|
||||
item: item,
|
||||
floor: floor,
|
||||
isDetail: isDetail,
|
||||
maxWidth: maxWidth,
|
||||
);
|
||||
// 活动
|
||||
case 'DYNAMIC_TYPE_COMMON_SQUARE':
|
||||
@@ -315,7 +309,6 @@ Widget module(
|
||||
isDetail: isDetail,
|
||||
item: item,
|
||||
floor: floor,
|
||||
maxWidth: maxWidth,
|
||||
);
|
||||
|
||||
default:
|
||||
|
||||
@@ -22,7 +22,6 @@ TextSpan? richNode(
|
||||
BuildContext context, {
|
||||
required ThemeData theme,
|
||||
required DynamicItemModel item,
|
||||
required double maxWidth,
|
||||
}) {
|
||||
try {
|
||||
late final style = TextStyle(color: theme.colorScheme.primary);
|
||||
|
||||
@@ -1,4 +1,3 @@
|
||||
import 'package:PiliPlus/common/widgets/flutter/dyn/ink_well.dart';
|
||||
import 'package:PiliPlus/common/widgets/image/network_img_layer.dart';
|
||||
import 'package:PiliPlus/models/common/dynamic/up_panel_position.dart';
|
||||
import 'package:PiliPlus/models/common/image_type.dart';
|
||||
@@ -10,7 +9,7 @@ import 'package:PiliPlus/utils/extension/num_ext.dart';
|
||||
import 'package:PiliPlus/utils/feed_back.dart';
|
||||
import 'package:PiliPlus/utils/page_utils.dart';
|
||||
import 'package:PiliPlus/utils/platform_utils.dart';
|
||||
import 'package:flutter/material.dart' hide InkWell;
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:get/get.dart';
|
||||
|
||||
class UpPanel extends StatefulWidget {
|
||||
|
||||
@@ -1,12 +1,13 @@
|
||||
// 视频or合集
|
||||
import 'package:PiliPlus/common/constants.dart';
|
||||
import 'package:PiliPlus/common/widgets/badge.dart';
|
||||
import 'package:PiliPlus/common/widgets/flutter/layout_builder.dart';
|
||||
import 'package:PiliPlus/common/widgets/image/network_img_layer.dart';
|
||||
import 'package:PiliPlus/models/common/badge_type.dart';
|
||||
import 'package:PiliPlus/models/dynamics/result.dart';
|
||||
import 'package:PiliPlus/utils/extension/num_ext.dart';
|
||||
import 'package:PiliPlus/utils/num_utils.dart';
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:flutter/material.dart' hide LayoutBuilder;
|
||||
|
||||
Widget videoSeasonWidget(
|
||||
BuildContext context, {
|
||||
@@ -15,7 +16,6 @@ Widget videoSeasonWidget(
|
||||
required DynamicItemModel item,
|
||||
required bool isSave,
|
||||
required bool isDetail,
|
||||
required double maxWidth,
|
||||
}) {
|
||||
// type archive ugcSeason
|
||||
// archive 视频/显示发布人
|
||||
@@ -36,7 +36,6 @@ Widget videoSeasonWidget(
|
||||
|
||||
EdgeInsets padding;
|
||||
if (floor == 1) {
|
||||
maxWidth -= 24;
|
||||
padding = const EdgeInsets.symmetric(horizontal: 12);
|
||||
} else {
|
||||
padding = EdgeInsets.zero;
|
||||
@@ -51,11 +50,13 @@ Widget videoSeasonWidget(
|
||||
Stack(
|
||||
clipBehavior: Clip.none,
|
||||
children: [
|
||||
NetworkImgLayer(
|
||||
width: maxWidth,
|
||||
height: maxWidth / StyleString.aspectRatio,
|
||||
src: cover,
|
||||
quality: 40,
|
||||
LayoutBuilder(
|
||||
builder: (context, constraints) => NetworkImgLayer(
|
||||
width: constraints.maxWidth,
|
||||
height: constraints.maxWidth / StyleString.aspectRatio,
|
||||
src: cover,
|
||||
quality: 40,
|
||||
),
|
||||
),
|
||||
if (video.badge?.text case final badge?)
|
||||
PBadge(
|
||||
|
||||
@@ -4,6 +4,7 @@ import 'dart:math';
|
||||
import 'package:PiliPlus/common/widgets/avatars.dart';
|
||||
import 'package:PiliPlus/common/widgets/badge.dart';
|
||||
import 'package:PiliPlus/common/widgets/dialog/report.dart';
|
||||
import 'package:PiliPlus/common/widgets/flutter/layout_builder.dart';
|
||||
import 'package:PiliPlus/common/widgets/image/network_img_layer.dart';
|
||||
import 'package:PiliPlus/http/dynamics.dart';
|
||||
import 'package:PiliPlus/http/loading_state.dart';
|
||||
@@ -15,7 +16,7 @@ import 'package:PiliPlus/utils/date_utils.dart';
|
||||
import 'package:PiliPlus/utils/extension/iterable_ext.dart';
|
||||
import 'package:PiliPlus/utils/grid.dart';
|
||||
import 'package:PiliPlus/utils/num_utils.dart';
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:flutter/material.dart' hide LayoutBuilder;
|
||||
import 'package:get/get.dart';
|
||||
|
||||
class VotePanel extends StatefulWidget {
|
||||
|
||||
Reference in New Issue
Block a user