Documentation, Basic Login Workflow

This commit is contained in:
2021-02-20 14:10:25 -05:00
parent fec590b16e
commit 5212d7bf70
27 changed files with 1327 additions and 341 deletions

View File

@@ -24,7 +24,6 @@ class AppComponentState extends State<AppComponent> {
@override
void dispose() async {
// Log.info('dispose');
super.dispose();
await _application.onTerminate();
}

View File

@@ -3,13 +3,13 @@ import 'package:flutter/material.dart';
import 'package:imagini/screens/home_screen.dart';
import 'package:imagini/screens/login_screen.dart';
import 'package:imagini/screens/splash_screen.dart';
// import 'package:imagini/screens/splash_screen.dart';
var splashHandler = new Handler(
handlerFunc: (BuildContext context, Map<String, List<String>> params) {
return SplashScreen();
}
);
// var splashHandler = new Handler(
// handlerFunc: (BuildContext context, Map<String, List<String>> params) {
// return SplashScreen();
// }
// );
var loginHandler = new Handler(
handlerFunc: (BuildContext context, Map<String, List<String>> params) {
@@ -42,7 +42,7 @@ class AppRoutes {
return;
}
);
router.define(SplashScreen.PATH, handler: splashHandler);
// router.define(SplashScreen.PATH, handler: splashHandler);
router.define(LoginScreen.PATH, handler: loginHandler);
router.define(HomeScreen.PATH, handler: homeHandler);
// router.define(AppDetailPage.PATH, handler: appDetailRouteHandler);

View File

@@ -3,13 +3,20 @@ import 'package:fluro/fluro.dart';
import 'package:imagini/core/app_routes.dart';
import 'package:imagini/api/api_provider.dart';
import 'package:imagini/api/imagini_api_repository.dart';
import 'package:imagini/core/storage_client/base_storage_client.dart';
import 'package:imagini/core/storage_client/storage_client.dart'
if (dart.library.html) 'package:imagini/core/storage_client/browser_storage_client.dart'
if (dart.library.io) 'package:imagini/core/storage_client/mobile_storage_client.dart';
class ImaginiApplication {
FluroRouter router;
ImaginiAPIRepository imaginiAPI;
BaseStorageClient storageClient;
Future<void> onCreate() async {
_initRouter();
_initStorageClient();
_initAPIRepository();
}
@@ -20,8 +27,13 @@ class ImaginiApplication {
AppRoutes.configureRoutes(router);
}
_initStorageClient() {
storageClient = getStorageClient();
}
_initAPIRepository() {
APIProvider apiProvider = new APIProvider(server: "http://localhost:8484");
// TODO: Get from config
APIProvider apiProvider = new APIProvider(storageClient);
imaginiAPI = ImaginiAPIRepository(apiProvider);
}
}

View File

@@ -0,0 +1,4 @@
abstract class BaseStorageClient {
Future<String> get(String key);
Future<void> set(String key, String value);
}

View File

@@ -0,0 +1,19 @@
import 'dart:html';
import './base_storage_client.dart';
BaseStorageClient getStorageClient() => BrowserStorageClient();
class BrowserStorageClient extends BaseStorageClient {
@override
Future<String> get(String key) async {
var requestedValue = window.localStorage.containsKey(key) ? window.localStorage[key] : "";
return requestedValue;
}
@override
Future<void> set(String key, String value) async {
window.localStorage[key] = value;
}
}

View File

@@ -0,0 +1,19 @@
import 'package:flutter_secure_storage/flutter_secure_storage.dart';
import './base_storage_client.dart';
BaseStorageClient getStorageClient() => MobileStorageClient();
class MobileStorageClient extends BaseStorageClient {
final storage = new FlutterSecureStorage();
@override
Future<String> get(String key) async {
return storage.read(key: key);
}
@override
Future<void> set(String key, String value) async {
return storage.write(key: key, value: value);
}
}

View File

@@ -0,0 +1,4 @@
import './base_storage_client.dart';
BaseStorageClient getStorageClient() => throw UnsupportedError(
'Cannot create a storage client.');