import 'package:flutter/material.dart'; import 'package:flutter_bloc/flutter_bloc.dart'; import 'package:imagini/blocs/login/bloc.dart'; import 'package:imagini/blocs/login/states.dart'; import 'package:imagini/blocs/login/events.dart'; import 'package:imagini/blocs/theme/bloc.dart'; import 'package:imagini/blocs/theme/events.dart'; import 'package:imagini/settings/preferences.dart'; import 'package:imagini/settings/app_themes.dart'; class LoginScreen extends StatefulWidget { @override _LoginScreenState createState() => _LoginScreenState(); } class _LoginScreenState extends State { @override void initState() { super.initState(); _loadTheme(); _loadLogin(); } _loadTheme() async { context.read().add(ThemeEvent(appTheme: Preferences.getTheme())); } _loadLogin() async { context.read().add(LoginEvents.loginResult); } _setTheme(bool darkTheme) async { AppTheme selectedTheme = darkTheme ? AppTheme.lightTheme : AppTheme.darkTheme; context.read().add(ThemeEvent(appTheme: selectedTheme)); Preferences.saveTheme(selectedTheme); } @override Widget build(BuildContext context) { return Scaffold( body: _body(), ); } _body() { return BlocBuilder(builder: (BuildContext context, LoginState state) { // Set Theme _setTheme(true); if (state is LoginNeeded) { // TODO: Load Login Form return Center( child: Text("Login Needed") ); } if (state is LoginFailed) { // TODO: Update Form Failed return Center( child: Text("Login Failed: ${state.error.message.toString()}") ); } if (state is LoginSuccess) { // TODO: Navigate to /Gallery return Center( child: Text("Login Success") ); } // TODO: Login Screen return Center( child: Text("Login Loading") ); }); } }