mirror of
https://bitbucket.org/FransoletThomas/tablet-app.git
synced 2025-12-06 00:21:19 +00:00
Add future builder for webview and export to specific component
This commit is contained in:
parent
db2e382eb2
commit
9ad2ee645b
39
lib/Components/webView.dart
Normal file
39
lib/Components/webView.dart
Normal file
@ -0,0 +1,39 @@
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:webview_flutter/webview_flutter.dart';
|
||||
|
||||
class WebViewWidget extends StatefulWidget {
|
||||
final String url;
|
||||
WebViewWidget({this.url});
|
||||
|
||||
@override
|
||||
_WebViewWidget createState() => _WebViewWidget();
|
||||
}
|
||||
|
||||
class _WebViewWidget extends State<WebViewWidget> {
|
||||
WebView _webView;
|
||||
@override
|
||||
void initState() {
|
||||
super.initState();
|
||||
_webView = WebView(
|
||||
initialUrl: "https://my.matterport.com/show/?m=k8bvdezfHbT",
|
||||
javascriptMode: JavascriptMode.unrestricted,
|
||||
navigationDelegate: (NavigationRequest request) {
|
||||
if (request.url != "https://my.matterport.com/show/?m=k8bvdezfHbT") {
|
||||
print('blocking navigation to $request}');
|
||||
return NavigationDecision.prevent;
|
||||
}
|
||||
print('allowing navigation to $request');
|
||||
return NavigationDecision.navigate;
|
||||
},
|
||||
);
|
||||
}
|
||||
|
||||
@override
|
||||
void dispose() {
|
||||
super.dispose();
|
||||
_webView = null;
|
||||
}
|
||||
|
||||
@override
|
||||
Widget build(BuildContext context) => _webView;
|
||||
}
|
||||
@ -5,6 +5,7 @@ import 'package:flutter/services.dart';
|
||||
import 'package:webview_flutter/webview_flutter.dart';
|
||||
|
||||
import 'Components/custom_clipper.dart';
|
||||
import 'Components/webView.dart';
|
||||
import 'constants.dart';
|
||||
|
||||
void main() {
|
||||
@ -67,7 +68,7 @@ class MyHomePage extends StatefulWidget {
|
||||
}
|
||||
|
||||
class _MyHomePageState extends State<MyHomePage> with TickerProviderStateMixin {
|
||||
int _counter = 0;
|
||||
static String url= "https://my.matterport.com/show/?m=k8bvdezfHbT";
|
||||
Size sizeScreen = new Size(1080.0, 1920.0); // Tablet resolution
|
||||
double elementMinimizedSize = 200.0;
|
||||
double elementMaximizedSize = 400.0;
|
||||
@ -128,7 +129,6 @@ class _MyHomePageState extends State<MyHomePage> with TickerProviderStateMixin
|
||||
|
||||
void _incrementCounter() {
|
||||
setState(() {
|
||||
_counter++;
|
||||
|
||||
minimized = !minimized;
|
||||
|
||||
@ -170,6 +170,11 @@ class _MyHomePageState extends State<MyHomePage> with TickerProviderStateMixin
|
||||
super.dispose();
|
||||
}
|
||||
|
||||
static Future<String> get _url async {
|
||||
await Future.delayed(Duration(seconds: 1));
|
||||
return url;
|
||||
}
|
||||
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
SystemChrome.setEnabledSystemUIOverlays([]);
|
||||
@ -279,30 +284,19 @@ class _MyHomePageState extends State<MyHomePage> with TickerProviderStateMixin
|
||||
child: Container(
|
||||
width: size.width,
|
||||
height: size.height,
|
||||
child: WebView(
|
||||
initialUrl: "https://my.matterport.com/show/?m=k8bvdezfHbT",
|
||||
javascriptMode: JavascriptMode.unrestricted,
|
||||
onWebViewCreated: (WebViewController webViewController) {
|
||||
_webViewController.complete(webViewController);
|
||||
},
|
||||
navigationDelegate: (NavigationRequest request) {
|
||||
if (request.url != "https://my.matterport.com/show/?m=k8bvdezfHbT") {
|
||||
print('blocking navigation to $request}');
|
||||
return NavigationDecision.prevent;
|
||||
}
|
||||
print('allowing navigation to $request');
|
||||
return NavigationDecision.navigate;
|
||||
},
|
||||
child: FutureBuilder(
|
||||
future: _url,
|
||||
builder: (BuildContext context, AsyncSnapshot snapshot) => snapshot.hasData
|
||||
? WebViewWidget(url: snapshot.data,)
|
||||
: CircularProgressIndicator()),
|
||||
)),
|
||||
),
|
||||
),
|
||||
),
|
||||
),
|
||||
);
|
||||
},
|
||||
}),
|
||||
),
|
||||
),
|
||||
),
|
||||
// MENU
|
||||
AnimatedPositioned(
|
||||
duration: const Duration(milliseconds: 2000),
|
||||
@ -323,15 +317,18 @@ class _MyHomePageState extends State<MyHomePage> with TickerProviderStateMixin
|
||||
crossAxisAlignment: CrossAxisAlignment.center,
|
||||
mainAxisAlignment: MainAxisAlignment.spaceEvenly,
|
||||
children: [
|
||||
Text('MENU'),
|
||||
Column(
|
||||
crossAxisAlignment: CrossAxisAlignment.center,
|
||||
mainAxisAlignment: MainAxisAlignment.spaceAround,
|
||||
children: [
|
||||
Text('Sub menu 1'),
|
||||
Text('Sub menu 2'),
|
||||
]
|
||||
)
|
||||
if(minimized) ... [
|
||||
Text('MENU'),
|
||||
Column(
|
||||
crossAxisAlignment: CrossAxisAlignment.center,
|
||||
mainAxisAlignment: MainAxisAlignment.spaceAround,
|
||||
children: [
|
||||
Text('Sub menu 1'),
|
||||
Text('Sub menu 2'),
|
||||
]
|
||||
)
|
||||
]
|
||||
|
||||
]
|
||||
),
|
||||
/*Icon(
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user