112 lines
3.3 KiB
Dart
Executable File
112 lines
3.3 KiB
Dart
Executable File
import 'dart:async';
|
|
import 'dart:io';
|
|
|
|
import 'package:flutter/material.dart';
|
|
import 'package:flutter_inappwebview/flutter_inappwebview.dart';
|
|
|
|
import 'package:flutter_inappwebview_example/chrome_safari_browser_example.screen.dart';
|
|
import 'package:flutter_inappwebview_example/headless_in_app_webview.screen.dart';
|
|
import 'package:flutter_inappwebview_example/in_app_webiew_example.screen.dart';
|
|
import 'package:flutter_inappwebview_example/in_app_browser_example.screen.dart';
|
|
// import 'package:path_provider/path_provider.dart';
|
|
// import 'package:permission_handler/permission_handler.dart';
|
|
|
|
// InAppLocalhostServer localhostServer = new InAppLocalhostServer();
|
|
|
|
Future main() async {
|
|
WidgetsFlutterBinding.ensureInitialized();
|
|
// await Permission.camera.request();
|
|
// await Permission.microphone.request();
|
|
//await Permission.storage.request();
|
|
|
|
if (Platform.isAndroid) {
|
|
await AndroidInAppWebViewController.setWebContentsDebuggingEnabled(true);
|
|
|
|
var swAvailable = await AndroidWebViewFeature.isFeatureSupported(
|
|
AndroidWebViewFeature.SERVICE_WORKER_BASIC_USAGE);
|
|
var swInterceptAvailable = await AndroidWebViewFeature.isFeatureSupported(
|
|
AndroidWebViewFeature.SERVICE_WORKER_SHOULD_INTERCEPT_REQUEST);
|
|
|
|
if (swAvailable && swInterceptAvailable) {
|
|
AndroidServiceWorkerController serviceWorkerController =
|
|
AndroidServiceWorkerController.instance();
|
|
|
|
serviceWorkerController.serviceWorkerClient = AndroidServiceWorkerClient(
|
|
shouldInterceptRequest: (request) async {
|
|
print(request);
|
|
return null;
|
|
},
|
|
);
|
|
}
|
|
}
|
|
|
|
runApp(MyApp());
|
|
}
|
|
|
|
Drawer myDrawer({required BuildContext context}) {
|
|
return Drawer(
|
|
child: ListView(
|
|
padding: EdgeInsets.zero,
|
|
children: <Widget>[
|
|
DrawerHeader(
|
|
child: Text('flutter_inappbrowser example'),
|
|
decoration: BoxDecoration(
|
|
color: Colors.blue,
|
|
),
|
|
),
|
|
ListTile(
|
|
title: Text('InAppBrowser'),
|
|
onTap: () {
|
|
Navigator.pushReplacementNamed(context, '/InAppBrowser');
|
|
},
|
|
),
|
|
ListTile(
|
|
title: Text('ChromeSafariBrowser'),
|
|
onTap: () {
|
|
Navigator.pushReplacementNamed(context, '/ChromeSafariBrowser');
|
|
},
|
|
),
|
|
ListTile(
|
|
title: Text('InAppWebView'),
|
|
onTap: () {
|
|
Navigator.pushReplacementNamed(context, '/');
|
|
},
|
|
),
|
|
ListTile(
|
|
title: Text('HeadlessInAppWebView'),
|
|
onTap: () {
|
|
Navigator.pushReplacementNamed(context, '/HeadlessInAppWebView');
|
|
},
|
|
),
|
|
],
|
|
),
|
|
);
|
|
}
|
|
|
|
class MyApp extends StatefulWidget {
|
|
@override
|
|
_MyAppState createState() => new _MyAppState();
|
|
}
|
|
|
|
class _MyAppState extends State<MyApp> {
|
|
@override
|
|
void initState() {
|
|
super.initState();
|
|
}
|
|
|
|
@override
|
|
void dispose() {
|
|
super.dispose();
|
|
}
|
|
|
|
@override
|
|
Widget build(BuildContext context) {
|
|
return MaterialApp(initialRoute: '/', routes: {
|
|
'/': (context) => InAppWebViewExampleScreen(),
|
|
'/InAppBrowser': (context) => InAppBrowserExampleScreen(),
|
|
'/ChromeSafariBrowser': (context) => ChromeSafariBrowserExampleScreen(),
|
|
'/HeadlessInAppWebView': (context) => HeadlessInAppWebViewExampleScreen(),
|
|
});
|
|
}
|
|
}
|