emoji setting

Signed-off-by: bggRGjQaUbCoE <githubaccount56556@proton.me>
This commit is contained in:
bggRGjQaUbCoE
2025-05-14 17:45:41 +08:00
parent 98985a7fa4
commit 69f9fb398f

View File

@@ -1,3 +1,4 @@
import 'package:PiliPlus/common/widgets/button/icon_button.dart';
import 'package:PiliPlus/common/widgets/image/network_img_layer.dart'; import 'package:PiliPlus/common/widgets/image/network_img_layer.dart';
import 'package:PiliPlus/common/widgets/loading_widget/loading_widget.dart'; import 'package:PiliPlus/common/widgets/loading_widget/loading_widget.dart';
import 'package:PiliPlus/common/widgets/scroll_physics.dart'; import 'package:PiliPlus/common/widgets/scroll_physics.dart';
@@ -27,10 +28,13 @@ class _EmotePanelState extends State<EmotePanel>
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
super.build(context); super.build(context);
return Obx(() => _buildBody(_emotePanelController.loadingState.value)); final ThemeData theme = Theme.of(context);
return Obx(
() => _buildBody(theme, _emotePanelController.loadingState.value));
} }
Widget _buildBody(LoadingState<List<Packages>?> loadingState) { Widget _buildBody(
ThemeData theme, LoadingState<List<Packages>?> loadingState) {
return switch (loadingState) { return switch (loadingState) {
Loading() => loadingWidget, Loading() => loadingWidget,
Success(:var response) => response?.isNotEmpty == true Success(:var response) => response?.isNotEmpty == true
@@ -93,27 +97,56 @@ class _EmotePanelState extends State<EmotePanel>
), ),
Divider( Divider(
height: 1, height: 1,
color: Theme.of(context).dividerColor.withOpacity(0.1), color: theme.dividerColor.withOpacity(0.1),
), ),
TabBar( Row(
controller: _emotePanelController.tabController, children: [
padding: const EdgeInsets.only(right: 60), Padding(
dividerColor: Colors.transparent, padding: const EdgeInsets.symmetric(horizontal: 10),
dividerHeight: 0, child: iconButton(
isScrollable: true, iconSize: 20,
tabs: response iconColor:
.map( theme.colorScheme.onSurfaceVariant.withOpacity(0.8),
(e) => Padding( bgColor: Colors.transparent,
padding: const EdgeInsets.all(8), context: context,
child: NetworkImgLayer( onPressed: () {
width: 24, Get.toNamed(
height: 24, '/webview',
type: ImageType.emote, parameters: {
src: e.url, 'url':
), 'https://www.bilibili.com/h5/mall/emoji-package/home?navhide=1&native.theme=1&night=${Get.isDarkMode ? 1 : 0}',
},
);
},
icon: Icons.settings,
),
),
Expanded(
child: Material(
color: Colors.transparent,
child: TabBar(
controller: _emotePanelController.tabController,
padding: const EdgeInsets.only(right: 60),
dividerColor: Colors.transparent,
dividerHeight: 0,
isScrollable: true,
tabs: response
.map(
(e) => Padding(
padding: const EdgeInsets.all(8),
child: NetworkImgLayer(
width: 24,
height: 24,
type: ImageType.emote,
src: e.url,
),
),
)
.toList(),
), ),
) ),
.toList(), ),
],
), ),
SizedBox(height: MediaQuery.of(context).padding.bottom), SizedBox(height: MediaQuery.of(context).padding.bottom),
], ],