Я пытаюсь сохранить состояние, используя библиотеку hydrated_blo c, проблема в том, что все примеры этой библиотеки очень просты c, и я хочу сохранить состояние, используя пример api rest, но я по-прежнему невозможно реализовать логи c этого примера:
userbloc_blo c .dart
import 'dart:async';
import 'package:di/users/model/user.dart';
import 'package:di/users/repository/cloud_api_repository.dart';
import 'package:equatable/equatable.dart';
import 'package:hydrated_bloc/hydrated_bloc.dart';
part 'userbloc_event.dart';
part 'userbloc_state.dart';
class UserblocBloc extends HydratedBloc<UserblocEvent, UserblocState> {
@override
UserblocState get initialState {
return super.initialState ?? UserblocInitial();
}
@override
UserblocState fromJson(Map<String, dynamic> json) {
try {
final usermodel = UserModel.fromJson(json);
return UserblocLoaded(usermodel);
} catch (_) {
return null;
}
}
@override
Map<String, dynamic> toJson(UserblocState state) {
if (state is UserblocLoaded) {
return state.userModel.toJson();
}else{
return null;
}
}
@override
Stream<UserblocState> mapEventToState(
UserblocEvent event,
) async* {
}
}
userbloc_state.dart
part of 'userbloc_bloc.dart';
abstract class UserblocState extends Equatable {
UserblocState([List props = const[]]);
}
class UserblocInitial extends UserblocState {
CloudApiRepository _cloudApiRepository;
@override
List<Object> get props => null;
Future<UserModel> getlistUser() => _cloudApiRepository.getlistUser();
}
class UserblocLoading extends UserblocState {
@override
Li
st<Object> get props => null;
}
class UserblocLoaded extends UserblocState {
final UserModel userModel;
UserblocLoaded(this.userModel);
@override
List<Object> get props => null;
}
HomeUser.dart
import 'package:di/users/bloc/userbloc/userbloc_bloc.dart';
import 'package:di/users/model/user.dart';
import 'package:flutter/material.dart';
import 'package:flutter_bloc/flutter_bloc.dart';
class HomeUser extends StatefulWidget {
HomeUser({Key key}) : super(key: key);
@override
_HomeUserState createState() => _HomeUserState();
}
class _HomeUserState extends State<HomeUser> {
@override
Widget build(BuildContext context) {
return Scaffold(
body: BlocProvider(create: (context) => UserblocBloc(),
child: BlocBuilder<UserblocBloc, UserblocState>(
builder: (BuildContext context, UserblocState state) {
if (state is UserblocInitial) {
return showanytext();
} else if (state is UserblocLoading) {
return buildLoading();
} else if (state is UserblocLoaded) {
return buildColumnWithData(state.userModel.data);
}
},
),
),
);
}
}
Widget buildColumnWithData(List<User> users){
final user = users;
return ListView.builder(
itemCount: users.length,
itemBuilder: (BuildContext context, int i){
return Container(
padding: EdgeInsets.all(15),
child: Text("${user[i].firstName}", style: TextStyle(color:Colors.white),),
decoration: BoxDecoration(
color: Colors.black
),
);
});
}
Widget buildLoading(){
return Center(
child: Container(
child: CircularProgressIndicator(),
),
);
}
Widget showanytext(){
return Center(
child: Container(
child: Text("Construyendo el widget"),
),
);
}
Некоторое представление о том, как я могу сохранить состояние своего планшета, потребляя API таким образом, что если я закрою приложение и снова открою его в том же месте, оставив ее в последний раз, я закрою ее