в моем приложении у меня есть модель как эта структура ниже, и я хочу инициализировать это внутри BlocBuilder
, чтобы обновить элементы пользовательского интерфейса, такие как Text()
, например:
class _Login extends State<Login> {
UserInfo _userInfo = UserInfo();
LoginListingBloc loginListingBloc;
@override
void initState() {
loginListingBloc = BlocProvider.of<LoginListingBloc>(context);
super.initState();
}
@override
Widget build(BuildContext context) {
return Scaffold(
body: BlocBuilder(
bloc: loginListingBloc,
builder: (BuildContext context, LoginListingStates state) {
if (state is LoginUninitializedState) {
} else if (state is LoginFetchedState) {
_userInfo = state.userInfo;
print(_userInfo.name);
}
return Text("My Username from server is: $_userInfo.name");
},
),
);
}
}
Я не хочу создавать переменные типа name
, email
или avatart
и заполнять их внутри BlocBuilder
, чтобы использовать их, потому что у меня есть эта модель класса, и я думаю, что могу инициализировать внутри BlocBuilder
чтобы использовать это,
к сожалению, я получаю эту ошибку при запуске приложения:
Следующий ArgumentError был брошен зданием
BlocBuilder (грязный,
зависимости: [MediaQuery], состояние:
_BlocBuilderBaseState # 2342d): недопустимый аргумент (ы)
LoginListingStates
содержание класса:
abstract class LoginListingStates {}
class LoginUninitializedState extends LoginListingStates {}
class LoginFetchingState extends LoginListingStates {}
class LoginFetchedState extends LoginListingStates {
final UserInfo userInfo;
LoginFetchedState({this.userInfo}) : assert(userInfo != null);
}
class LoginErrorState extends LoginListingStates {}
и моя UserInfo
модель класса:
class UserInfo {
String _name;
String _email;
String _avatar;
UserInfo();
UserInfo.fromJson(Map<String, dynamic> json)
: _name = json["name"],
_email = json["email"],
_avatar = json["avatar"],
Map<String, dynamic> toJson() {
final Map<String, dynamic> data = new Map<String, dynamic>();
data['name'] = _name;
data['email'] = _email;
data['avatar'] = _avatar;
return data;
}
String get email => _email;
String get name => _name;
int get avatar=> _avatar;
}