Finally - A Mobile App Basic Implementation
This commit is contained in:
35
web_native/lib/blocs/SplashBloc.dart
Normal file
35
web_native/lib/blocs/SplashBloc.dart
Normal 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) {
|
||||
// });
|
||||
}
|
||||
}
|
||||
@@ -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;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,3 +0,0 @@
|
||||
enum LoginEvents {
|
||||
loginResult,
|
||||
}
|
||||
@@ -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});
|
||||
}
|
||||
@@ -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],
|
||||
);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,6 +0,0 @@
|
||||
import 'package:imagini/settings/app_themes.dart';
|
||||
|
||||
class ThemeEvent {
|
||||
final AppTheme appTheme;
|
||||
ThemeEvent({this.appTheme});
|
||||
}
|
||||
@@ -1,6 +0,0 @@
|
||||
import 'package:flutter/material.dart';
|
||||
|
||||
class ThemeState {
|
||||
final ThemeData themeData;
|
||||
ThemeState({this.themeData});
|
||||
}
|
||||
Reference in New Issue
Block a user