|
@@ -1,11 +1,8 @@
|
|
|
-import 'package:fis_live/controller/adapters/core.dart';
|
|
|
import 'package:fis_live/controller/adapters/single/adapter_io.dart';
|
|
|
import 'package:fis_live/controller/controller.dart';
|
|
|
-import 'package:fis_live/utils/asset_util.dart';
|
|
|
-import 'package:flutter/foundation.dart';
|
|
|
+import 'package:fis_live/controller/exception.dart';
|
|
|
import 'package:flutter/widgets.dart';
|
|
|
import 'package:flutter_inappwebview/flutter_inappwebview.dart';
|
|
|
-import 'package:webviewx/webviewx.dart';
|
|
|
|
|
|
import '../data_root.dart';
|
|
|
|
|
@@ -18,9 +15,12 @@ class SingleChannelView extends StatefulWidget {
|
|
|
}
|
|
|
|
|
|
class _SingleChannelViewState extends State<SingleChannelView> {
|
|
|
- late final LiveController controller;
|
|
|
- late final LiveControllerSingleIOAdapter adapter;
|
|
|
- bool isLoaded = false;
|
|
|
+ late final LiveShareDateProxy dataProxy;
|
|
|
+
|
|
|
+ LiveController get controller => dataProxy.controller;
|
|
|
+ LiveControllerSingleIOAdapter get adapter =>
|
|
|
+ controller.adapter! as LiveControllerSingleIOAdapter;
|
|
|
+ InAppWebViewController get wvController => adapter.webViewController!;
|
|
|
|
|
|
@override
|
|
|
void initState() {
|
|
@@ -29,27 +29,14 @@ class _SingleChannelViewState extends State<SingleChannelView> {
|
|
|
|
|
|
@override
|
|
|
void didChangeDependencies() {
|
|
|
- print("!!!!!!!!!!!didChangeDependencies");
|
|
|
- controller = LiveShareDateProxy.of(context)!.controller;
|
|
|
- adapter = controller.adapter! as LiveControllerSingleIOAdapter;
|
|
|
+ dataProxy = LiveShareDateProxy.of(context)!;
|
|
|
+ controller.adapter = LiveControllerSingleIOAdapter();
|
|
|
super.didChangeDependencies();
|
|
|
}
|
|
|
|
|
|
@override
|
|
|
Widget build(BuildContext context) {
|
|
|
- return Stack(
|
|
|
- children: [
|
|
|
- _buildWebView(),
|
|
|
- if (!isLoaded)
|
|
|
- Center(
|
|
|
- child: Image.asset(
|
|
|
- AssetUtil.getPath("loading.gif"),
|
|
|
- width: 36,
|
|
|
- height: 36,
|
|
|
- ),
|
|
|
- ),
|
|
|
- ],
|
|
|
- );
|
|
|
+ return _buildWebView();
|
|
|
}
|
|
|
|
|
|
Widget _buildWebView() {
|
|
@@ -61,33 +48,49 @@ class _SingleChannelViewState extends State<SingleChannelView> {
|
|
|
disableHorizontalScroll: true,
|
|
|
disableVerticalScroll: true,
|
|
|
allowFileAccessFromFileURLs: true,
|
|
|
+ allowUniversalAccessFromFileURLs: true,
|
|
|
),
|
|
|
),
|
|
|
onWebViewCreated: (c) {
|
|
|
adapter.webViewController = c;
|
|
|
- c.addJavaScriptHandler(
|
|
|
- handlerName: 'myHandlerName',
|
|
|
- callback: (args) {
|
|
|
- // print arguments coming from the JavaScript side!
|
|
|
- print(args);
|
|
|
-
|
|
|
- // return data to the JavaScript side!
|
|
|
- return {'bar': 'bar_value', 'baz': 'baz_value'};
|
|
|
- });
|
|
|
- },
|
|
|
- onLoadStop: (c, url) {
|
|
|
- final url = controller.source.url;
|
|
|
- c.evaluateJavascript(source: "load('$url')");
|
|
|
- Future.delayed(const Duration(seconds: 2), () {
|
|
|
- setState(() {
|
|
|
- isLoaded = true;
|
|
|
- });
|
|
|
- });
|
|
|
+ c.addJavaScriptHandler(handlerName: 'onReady', callback: _onReady);
|
|
|
+ c.addJavaScriptHandler(handlerName: 'onStart', callback: _onStart);
|
|
|
+ c.addJavaScriptHandler(handlerName: 'onStop', callback: _onStop);
|
|
|
+ c.addJavaScriptHandler(handlerName: 'onTimeout', callback: _onTimeout);
|
|
|
+ c.addJavaScriptHandler(handlerName: 'onError', callback: _onError);
|
|
|
+ c.addJavaScriptHandler(handlerName: 'onBuffering', callback: _onError);
|
|
|
},
|
|
|
- onConsoleMessage: (controller, consoleMessage) {
|
|
|
+ onLoadStop: (c, url) {},
|
|
|
+ onConsoleMessage: (c, consoleMessage) {
|
|
|
print(
|
|
|
"[WebView Console][${consoleMessage.messageLevel}] ${consoleMessage.message}");
|
|
|
},
|
|
|
);
|
|
|
}
|
|
|
+
|
|
|
+ dynamic _onReady(List args) {
|
|
|
+ final url = controller.source.url;
|
|
|
+ wvController.evaluateJavascript(source: "load('$url')");
|
|
|
+ controller.ready.emit(this, null);
|
|
|
+ }
|
|
|
+
|
|
|
+ dynamic _onStart(List args) {
|
|
|
+ controller.playStarted.emit(this, null);
|
|
|
+ }
|
|
|
+
|
|
|
+ dynamic _onStop(List args) {
|
|
|
+ controller.playStopped.emit(this, null);
|
|
|
+ }
|
|
|
+
|
|
|
+ dynamic _onTimeout(List args) {
|
|
|
+ controller.timeout.emit(this, null);
|
|
|
+ }
|
|
|
+
|
|
|
+ dynamic _onError(List args) {
|
|
|
+ final error = args.first;
|
|
|
+ controller.errorOccurred.emit(
|
|
|
+ this,
|
|
|
+ FLivePlayerException(error.code, error.msg),
|
|
|
+ );
|
|
|
+ }
|
|
|
}
|