refa player (#1848)

* tweak

* Reapply "opt: audio uri" (#1833)

This reverts commit 8e726f49b2.

* opt: player

* opt: player

* refa: create player

* refa: player

* opt: UaType

* fix: sb seek preview

* opt: setSub

* fix: screenshot

* opt: unnecessary final player state

* opt: player track

* opt FileSource constructor [skip ci]

* fixes

* fix: dispose player

* fix: quote

* update

* fix: multi ua & remove unused loop

* remove unneeded check [skip ci]

---------

Co-authored-by: dom <githubaccount56556@proton.me>
This commit is contained in:
My-Responsitories
2026-02-27 15:51:55 +08:00
committed by GitHub
parent 6782bee11a
commit 7276cde48a
39 changed files with 1063 additions and 1112 deletions

View File

@@ -1,6 +1,6 @@
import 'dart:io';
import 'package:PiliPlus/http/ua_type.dart';
import 'package:PiliPlus/http/browser_ua.dart';
import 'package:PiliPlus/main.dart';
import 'package:PiliPlus/models/common/webview_menu_type.dart';
import 'package:PiliPlus/utils/app_scheme.dart';
@@ -15,14 +15,20 @@ import 'package:flutter_smart_dialog/flutter_smart_dialog.dart';
import 'package:get/get.dart';
class WebviewPage extends StatefulWidget {
const WebviewPage({super.key, this.url, this.oid, this.title, this.uaType});
const WebviewPage({
super.key,
this.url,
this.oid,
this.title,
this.userAgent,
});
final String? url;
// note
final int? oid;
final String? title;
final UaType? uaType;
final String? userAgent;
@override
State<WebviewPage> createState() => _WebviewPageState();
@@ -30,7 +36,7 @@ class WebviewPage extends StatefulWidget {
class _WebviewPageState extends State<WebviewPage> {
late final String _url = widget.url ?? Get.parameters['url'] ?? '';
late final UaType uaType;
late final String userAgent;
final RxString title = ''.obs;
final RxDouble progress = 1.0.obs;
bool _inApp = false;
@@ -46,10 +52,13 @@ class _WebviewPageState extends State<WebviewPage> {
@override
void initState() {
super.initState();
late final uaType = Get.parameters['uaType'];
this.uaType =
widget.uaType ??
(uaType != null ? UaType.values.byName(uaType) : UaType.platformUA);
userAgent =
widget.userAgent ??
switch (Get.parameters['uaType']) {
'pc' => BrowserUa.pc,
'mob' => BrowserUa.mob,
_ => BrowserUa.platform,
};
if (Get.arguments case final Map map) {
_inApp = map['inApp'] ?? false;
_off = map['off'] ?? false;
@@ -169,7 +178,7 @@ class _WebviewPageState extends State<WebviewPage> {
useHybridComposition: false,
algorithmicDarkeningAllowed: true,
useShouldOverrideUrlLoading: true,
userAgent: uaType.ua,
userAgent: userAgent,
mixedContentMode: MixedContentMode.MIXED_CONTENT_ALWAYS_ALLOW,
),
initialUrlRequest: URLRequest(