Привет, когда пользователь вошел в систему, сохраните его идентификатор профиля в безопасном хранилище, после этого pu sh новый экран (например, главный экран и в состоянии инициализации загрузите ваш профиль)
Login blo c:
class LoginBloc extends Bloc<LoginEvent, LoginState> {
Api _repository;
TokenManager _tokenManager;
LoginBloc({
@required Api repository,
@required TokenManager tokenManager
}) : assert(repository != null),
assert(tokenManager != null),
_repository = repository,
_tokenManager = tokenManager;
@override
LoginState get initialState => LoginState.empty();
@override
Stream<LoginState> mapEventToState(LoginEvent event) async* {
if (event is LoginWithCredentialsPressed) {
yield* _mapLoginWithCredentialsPressedToState(
login: event.login,
password: event.password,
);
}
}
Stream<LoginState> _mapLoginWithCredentialsPressedToState({
String login,
String password,
}) async* {
yield LoginState.loading();
try {
LoginResponse loginResponse = await _repository.login(login, password, password);
await _tokenManager.setToken(loginResponse.token);
await _tokenManager.setRefreshToken(loginResponse.refresh_token);
yield LoginState.success();
} catch (_) {
yield LoginState.failure();
}
}
}
затем добавьте код, например, обратите внимание, это не полный код, я удалил некоторые части
@override
Widget build(BuildContext context) {
return BlocListener<LoginBloc, LoginState>(listener: (context, state) {
if (state.isSuccess) {
Navigator.pushReplacementNamed(context, '/main');
}
}, child: BlocBuilder<LoginBloc, LoginState>(builder: (context, state) {
return Padding(
padding: EdgeInsets.all(20),
child: Form(
child: ListView(
children: <Widget>[
Padding(
padding: EdgeInsets.symmetric(vertical: 20),
child: SvgPicture.asset(
'assets/logo.svg',
width: MediaQuery
.of(context)
.size
.width,
height: 150,
),
),
],
),
),
);
}));
Итак, pu sh ваш основной blo c и переопределите его initState () вроде (это ваш виджет)
@override
void initState() {
super.initState();
_menuBloc = BlocProvider.of<MenuBloc>(context);
_menuBloc.add(ModuleInitialized());
}
И в свой файл blo c добавьте код для загрузки ваших данных. Если есть вопросы, не стесняйтесь их задавать)