* opt: unused layout

* mod: semantics

* opt: DanmakuMsg type

* opt: avoid cast

* opt: unnecessary_lambdas

* opt: use isEven

* opt: logger

* opt: invalid common page

* tweak

* opt: unify DynController
This commit is contained in:
My-Responsitories
2025-08-27 12:01:53 +08:00
committed by GitHub
parent 56ffc2781f
commit 5f8313901b
83 changed files with 551 additions and 545 deletions

View File

@@ -6,6 +6,8 @@ import 'package:PiliPlus/http/constants.dart';
import 'package:PiliPlus/http/live.dart';
import 'package:PiliPlus/http/video.dart';
import 'package:PiliPlus/models/common/video/live_quality.dart';
import 'package:PiliPlus/models_new/live/live_danmaku/danmaku_msg.dart';
import 'package:PiliPlus/models_new/live/live_danmaku/live_emote.dart';
import 'package:PiliPlus/models_new/live/live_dm_info/data.dart';
import 'package:PiliPlus/models_new/live/live_room_info_h5/data.dart';
import 'package:PiliPlus/models_new/live/live_room_play_info/codec.dart';
@@ -22,6 +24,7 @@ import 'package:PiliPlus/utils/video_utils.dart';
import 'package:canvas_danmaku/canvas_danmaku.dart';
import 'package:connectivity_plus/connectivity_plus.dart';
import 'package:easy_debounce/easy_throttle.dart';
import 'package:flutter/foundation.dart';
import 'package:flutter/material.dart';
import 'package:flutter/rendering.dart';
import 'package:flutter_smart_dialog/flutter_smart_dialog.dart';
@@ -60,7 +63,7 @@ class LiveRoomController extends GetxController {
// dm
LiveDmInfoData? dmInfo;
List<RichTextItem>? savedDanmaku;
RxList<dynamic> messages = [].obs;
RxList<DanmakuMsg> messages = <DanmakuMsg>[].obs;
RxBool disableAutoScroll = false.obs;
LiveMessageStream? _msgStream;
late final ScrollController scrollController = ScrollController()
@@ -214,20 +217,12 @@ class LiveRoomController extends GetxController {
if (v['data'] case List list) {
try {
messages.addAll(
list.map(
(obj) => {
'name': obj['user']['base']['name'],
'uid': obj['user']['uid'],
'text': obj['text'],
'emots': obj['emots'],
'uemote': obj['emoticon']['emoticon_unique'] != ""
? obj['emoticon']
: null,
},
),
list.cast<Map<String, dynamic>>().map(DanmakuMsg.fromPrefetch),
);
WidgetsBinding.instance.addPostFrameCallback(scrollToBottom);
} catch (_) {}
} catch (e) {
if (kDebugMode) debugPrint(e.toString());
}
}
}
});
@@ -307,13 +302,18 @@ class LiveRoomController extends GetxController {
final extra = jsonDecode(content['extra']);
final user = content['user'];
final uid = user['uid'];
messages.add({
'name': user['base']['name'],
'uid': uid,
'text': info[1],
'emots': extra['emots'],
'uemote': first[13],
});
messages.add(
DanmakuMsg()
..name = user['base']['name']
..uid = uid
..text = info[1]
..emots = (extra['emots'] as Map<String, dynamic>?)?.map(
(k, v) => MapEntry(k, BaseEmote.fromJson(v)),
)
..uemote = first[13] is Map<String, dynamic>
? BaseEmote.fromJson(first[13])
: null,
);
if (plPlayerController.showDanmaku) {
plPlayerController.danmakuController?.addDanmaku(
@@ -335,7 +335,9 @@ class LiveRoomController extends GetxController {
}
}
}
} catch (_) {}
} catch (e) {
if (kDebugMode) debugPrint(e.toString());
}
})
..init();
}