Skip to content
Snippets Groups Projects

Mobile app initial implementation.

Merged Igor Markin requested to merge 3-android-mobile-app-web-view into master
3 files
+ 52
23
Compare changes
  • Side-by-side
  • Inline
Files
3
lib/src/app.dart 0 → 100644
+ 120
0
// app.dart
import 'screens/splashscreen.dart';
import 'package:flutter/material.dart';
import 'screens/home.dart';
import 'package:flutter/services.dart';
import 'dart:async';
import 'dart:developer';
import 'package:shared_preferences/shared_preferences.dart';
import 'package:uni_links/uni_links.dart';
class App extends StatelessWidget {
Future<Widget> initApplication() async {
Uri initialUri;
try {
initialUri = await getInitialUri();
} on PlatformException {
initialUri = null;
} on FormatException {
initialUri = null;
}
final prefs = await SharedPreferences.getInstance();
final host = prefs.getString('host');
return new MainApp(initialUri: initialUri, initialHost: host);
}
@override
Widget build(BuildContext context) {
return MaterialApp(
title: 'Vereign',
theme: ThemeData(
primaryColor: Color(0xFFd51d32),
fontFamily: "Arial",
textTheme: TextTheme(
button: TextStyle(color: Colors.white, fontSize: 18.0),
title: TextStyle(color: Colors.red))),
home: new SplashScreen(
navigateAfterFuture: initApplication,
)
);
}
}
class MainApp extends StatefulWidget {
MainApp({ @required this.initialUri, this.initialHost });
final Uri initialUri;
final String initialHost;
@override
_MainAppState createState() => _MainAppState();
}
class _MainAppState extends State<MainApp> {
StreamSubscription _sub;
String _appMode = "";
// Url of the app which invoked OAuth
String _invokerURL;
String _host;
@override
initState() {
super.initState();
initUniLinks();
}
@override
dispose() {
if (_sub != null) _sub.cancel();
super.dispose();
}
Future<Null> initUniLinks() async {
updateAppMode(widget.initialUri);
_sub = getUriLinksStream().listen((Uri uri) {
updateAppMode(uri);
}, onError: (err) {
log('got err: $err');
});
}
updateAppMode(Uri uri) {
if (uri?.path == "/authorize") {
setState(() {
_appMode = "oauth";
_invokerURL = uri.queryParameters["invokerUrl"];
});
} else {
setState(() {
_appMode = "app";
});
}
}
setMode(String mode) {
setState(() {
_appMode = mode;
});
}
@override
Widget build(BuildContext context) {
return new Scaffold(
appBar: new AppBar(title: Text("Vereign")),
body: Home(
mode: _appMode,
invokerURL: _invokerURL,
setMode: setMode,
host: widget.initialHost
)
);
}
}
\ No newline at end of file
Loading