127 lines
3.6 KiB
Dart
127 lines
3.6 KiB
Dart
|
|
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<StatefulWidget> createState() {
|
|
return DesktopTutorialsState();
|
|
}
|
|
|
|
}
|
|
|
|
class DesktopTutorialsState extends State<DesktopTutorials> {
|
|
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(),
|
|
),
|
|
],
|
|
);
|
|
}
|
|
}
|
|
|
|
} |