Newer
Older
// app.dart
import 'package:flutter/material.dart';
import 'screens/home.dart';
import 'package:flutter/services.dart';
import 'dart:async';
import 'dart:developer';
import 'package:uni_links/uni_links.dart';
class App extends StatefulWidget {
@override
_AppState createState() => _AppState();
}
class _AppState extends State<App> {
StreamSubscription _sub;
// Url of the app which invoked OAuth
String _invokerURL;
@override
initState() {
super.initState();
initUniLinks();
}
@override
dispose() {
if (_sub != null) _sub.cancel();
super.dispose();
}
Future<Null> initUniLinks() async {
Uri initialUri;
try {
initialUri = await getInitialUri();
} on PlatformException {
initialUri = null;
} on FormatException {
initialUri = null;
}
updateAppMode(initialUri);
_sub = getUriLinksStream().listen((Uri uri) {
updateAppMode(uri);
}, onError: (err) {
log('got err: $err');
});
}
updateAppMode(Uri uri) {
log("Uri ${uri}");
if (uri?.path == "/oauth2") {
setState(() {
_appMode = "oauth";
_invokerURL = uri.queryParameters["callbackUrl"];
});
} else {
setState(() {
_appMode = "app";
});
}
}
@override
Widget build(BuildContext context) {
return MaterialApp(
title: 'Flutter Web Views',
theme: ThemeData(
primarySwatch: Colors.blue,
fontFamily: "Arial",
textTheme: TextTheme(
button: TextStyle(color: Colors.white, fontSize: 18.0),
title: TextStyle(color: Colors.red))),
home: new Scaffold(
appBar: new AppBar(),
body: Home(
mode: _appMode,
invokerURL: _invokerURL