import '../../constants.dart'; import '../../utils/iframe_web.dart' if (dart.library.io) '../../utils/fake_iframe_web.dart'; import 'package:flutter/foundation.dart'; import 'package:flutter/material.dart'; import 'package:flutter_inappwebview/flutter_inappwebview.dart'; class DesktopTutorials extends StatefulWidget { const DesktopTutorials({Key key}) : super(key: key); @override State createState() { return DesktopTutorialsState(); } } class DesktopTutorialsState extends State { double sideSpace = 0; double mainSpace = 1200; InAppWebViewController webView; String url = ""; double progress = 0; bool isLoadStop = false; @override Widget build(BuildContext context) { if (MediaQuery.of(context).size.width <= 1200) { mainSpace = MediaQuery.of(context).size.width; sideSpace = 0; } else { mainSpace = 1200; sideSpace = (MediaQuery.of(context).size.width - 1200) / 2; } if (kIsWeb) { return Row( children: [ Container( width: sideSpace, ), Expanded( child: Column( mainAxisSize: MainAxisSize.max, children: [ Expanded( child: IFrameWeb( width: double.maxFinite.toString(), height: double.maxFinite.toString(), src: Constants.TUTORIAL_URL, ), ), ], ), ), Container( width: sideSpace, ), ], ); } else { print('progress: $progress'); return Stack( children: [ Row( children: [ Container( width: sideSpace, ), Expanded( child: InAppWebView( initialUrlRequest: URLRequest(url: Uri.parse(Constants.TUTORIAL_URL)), initialOptions: InAppWebViewGroupOptions( crossPlatform: InAppWebViewOptions( ), ), onWebViewCreated: (InAppWebViewController controller) { webView = controller; }, onLoadStart: (controller, url) { if (mounted) { setState(() { this.url = url.toString(); this.isLoadStop = false; }); } }, onLoadStop: (controller, url) async { if (mounted) { setState(() { this.url = url.toString(); this.isLoadStop = true; }); } }, onProgressChanged: (InAppWebViewController controller, int progress) { if (mounted) { setState(() { if (this.progress < 1.0) { this.isLoadStop = false; } else { this.isLoadStop = true; } this.progress = progress / 100; }); } }, ), ), Container( width: sideSpace, ), ], ), isLoadStop ? Container() : Center( child: CircularProgressIndicator(), ), ], ); } } }