Finally - A Mobile App Basic Implementation

This commit is contained in:
2021-01-27 23:33:26 -05:00
parent 4378a2927b
commit dc56899b8b
57 changed files with 847 additions and 1673 deletions

View File

@@ -0,0 +1,35 @@
import 'dart:async';
import 'package:imagini/core/ImaginiApplication.dart';
import 'package:imagini/api/ImaginiAPIRepository.dart';
import 'package:imagini/models/api/response/LoginResponse.dart';
class SplashBloc{
final ImaginiApplication _application;
final _loginController = StreamController<LoginResponse>();
Stream<LoginResponse> get loginResult => _loginController.stream;
SplashBloc(this._application){
_init();
}
void _init(){
// Do Initial Load
initializeLogin();
}
void dispose(){
_loginController.close();
}
initializeLogin(){
ImaginiAPIRepository imaginiAPI = _application.imaginiAPI;
_loginController.addStream(imaginiAPI.login("admin", "admin2"));
// imaginiAPI.login("admin", "admin1").listen((LoginResponse lr) {
// });
}
}

View File

@@ -1,42 +0,0 @@
import 'dart:io';
import 'package:flutter_bloc/flutter_bloc.dart';
import 'package:imagini/blocs/login/events.dart';
import 'package:imagini/blocs/login/states.dart';
import 'package:imagini/services/api/api.dart';
import 'package:imagini/services/api/exceptions.dart';
class LoginBloc extends Bloc<LoginEvents, LoginState> {
final ImaginiAPI imaginiAPI;
Map<String, String> loginResult;
String exampleResult;
LoginBloc({ this.imaginiAPI }) : super(LoginInitState());
@override
Stream<LoginState> mapEventToState(LoginEvents event) async* {
switch (event) {
case LoginEvents.loginResult:
yield LoginLoading();
try {
// exampleResult = await imaginiAPI.exampleApi();
loginResult = await imaginiAPI.loginAPI("admin", "admin");
yield LoginSuccess();
} on SocketException {
yield LoginFailed(
error: ConnectionRefusedException('No Internet'),
);
} on FormatException {
yield LoginFailed(
error: InvalidFormatException('Invalid Response Format'),
);
} catch (e) {
print(e);
yield LoginFailed(
error: UnknownException('Unknown Error'),
);
}
break;
}
}
}

View File

@@ -1,3 +0,0 @@
enum LoginEvents {
loginResult,
}

View File

@@ -1,28 +0,0 @@
// import 'package:equatable/equatable.dart';
//
// abstract class LoginState extends Equatable {
// @override
// List<Object> get props => [];
// }
abstract class LoginState {}
class LoginInitState extends LoginState {}
class LoginLoading extends LoginState {}
class LoginSuccess extends LoginState {}
class LoginNeeded extends LoginState {}
class LoginFailed extends LoginState {
final error;
LoginFailed({this.error});
}
class LoginLoaded extends LoginState {}
class LoginListError extends LoginState {
final error;
LoginListError({this.error});
}

View File

@@ -1,23 +0,0 @@
import 'package:flutter_bloc/flutter_bloc.dart';
import 'package:imagini/blocs/theme/events.dart';
import 'package:imagini/blocs/theme/state.dart';
import 'package:imagini/settings/app_themes.dart';
class ThemeBloc extends Bloc<ThemeEvent, ThemeState> {
//
ThemeBloc()
: super(
ThemeState(
themeData: AppThemes.appThemeData[AppTheme.lightTheme],
),
);
@override
Stream<ThemeState> mapEventToState(ThemeEvent event) async* {
if (event is ThemeEvent) {
yield ThemeState(
themeData: AppThemes.appThemeData[event.appTheme],
);
}
}
}

View File

@@ -1,6 +0,0 @@
import 'package:imagini/settings/app_themes.dart';
class ThemeEvent {
final AppTheme appTheme;
ThemeEvent({this.appTheme});
}

View File

@@ -1,6 +0,0 @@
import 'package:flutter/material.dart';
class ThemeState {
final ThemeData themeData;
ThemeState({this.themeData});
}