mirror of
https://bitbucket.org/FransoletThomas/tablet-app.git
synced 2025-12-06 08:31: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 'package:webview_flutter/webview_flutter.dart';
|
||||||
|
|
||||||
import 'Components/custom_clipper.dart';
|
import 'Components/custom_clipper.dart';
|
||||||
|
import 'Components/webView.dart';
|
||||||
import 'constants.dart';
|
import 'constants.dart';
|
||||||
|
|
||||||
void main() {
|
void main() {
|
||||||
@ -67,7 +68,7 @@ class MyHomePage extends StatefulWidget {
|
|||||||
}
|
}
|
||||||
|
|
||||||
class _MyHomePageState extends State<MyHomePage> with TickerProviderStateMixin {
|
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
|
Size sizeScreen = new Size(1080.0, 1920.0); // Tablet resolution
|
||||||
double elementMinimizedSize = 200.0;
|
double elementMinimizedSize = 200.0;
|
||||||
double elementMaximizedSize = 400.0;
|
double elementMaximizedSize = 400.0;
|
||||||
@ -128,7 +129,6 @@ class _MyHomePageState extends State<MyHomePage> with TickerProviderStateMixin
|
|||||||
|
|
||||||
void _incrementCounter() {
|
void _incrementCounter() {
|
||||||
setState(() {
|
setState(() {
|
||||||
_counter++;
|
|
||||||
|
|
||||||
minimized = !minimized;
|
minimized = !minimized;
|
||||||
|
|
||||||
@ -170,6 +170,11 @@ class _MyHomePageState extends State<MyHomePage> with TickerProviderStateMixin
|
|||||||
super.dispose();
|
super.dispose();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static Future<String> get _url async {
|
||||||
|
await Future.delayed(Duration(seconds: 1));
|
||||||
|
return url;
|
||||||
|
}
|
||||||
|
|
||||||
@override
|
@override
|
||||||
Widget build(BuildContext context) {
|
Widget build(BuildContext context) {
|
||||||
SystemChrome.setEnabledSystemUIOverlays([]);
|
SystemChrome.setEnabledSystemUIOverlays([]);
|
||||||
@ -279,30 +284,19 @@ class _MyHomePageState extends State<MyHomePage> with TickerProviderStateMixin
|
|||||||
child: Container(
|
child: Container(
|
||||||
width: size.width,
|
width: size.width,
|
||||||
height: size.height,
|
height: size.height,
|
||||||
child: WebView(
|
child: FutureBuilder(
|
||||||
initialUrl: "https://my.matterport.com/show/?m=k8bvdezfHbT",
|
future: _url,
|
||||||
javascriptMode: JavascriptMode.unrestricted,
|
builder: (BuildContext context, AsyncSnapshot snapshot) => snapshot.hasData
|
||||||
onWebViewCreated: (WebViewController webViewController) {
|
? WebViewWidget(url: snapshot.data,)
|
||||||
_webViewController.complete(webViewController);
|
: CircularProgressIndicator()),
|
||||||
},
|
|
||||||
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;
|
|
||||||
},
|
|
||||||
)),
|
)),
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
),
|
|
||||||
);
|
);
|
||||||
},
|
}),
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
),
|
|
||||||
// MENU
|
// MENU
|
||||||
AnimatedPositioned(
|
AnimatedPositioned(
|
||||||
duration: const Duration(milliseconds: 2000),
|
duration: const Duration(milliseconds: 2000),
|
||||||
@ -323,15 +317,18 @@ class _MyHomePageState extends State<MyHomePage> with TickerProviderStateMixin
|
|||||||
crossAxisAlignment: CrossAxisAlignment.center,
|
crossAxisAlignment: CrossAxisAlignment.center,
|
||||||
mainAxisAlignment: MainAxisAlignment.spaceEvenly,
|
mainAxisAlignment: MainAxisAlignment.spaceEvenly,
|
||||||
children: [
|
children: [
|
||||||
Text('MENU'),
|
if(minimized) ... [
|
||||||
Column(
|
Text('MENU'),
|
||||||
crossAxisAlignment: CrossAxisAlignment.center,
|
Column(
|
||||||
mainAxisAlignment: MainAxisAlignment.spaceAround,
|
crossAxisAlignment: CrossAxisAlignment.center,
|
||||||
children: [
|
mainAxisAlignment: MainAxisAlignment.spaceAround,
|
||||||
Text('Sub menu 1'),
|
children: [
|
||||||
Text('Sub menu 2'),
|
Text('Sub menu 1'),
|
||||||
]
|
Text('Sub menu 2'),
|
||||||
)
|
]
|
||||||
|
)
|
||||||
|
]
|
||||||
|
|
||||||
]
|
]
|
||||||
),
|
),
|
||||||
/*Icon(
|
/*Icon(
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user