инициализация класса как модели внутри BlocBuilder и получение ошибки - PullRequest
0 голосов
/ 14 мая 2019

в моем приложении у меня есть модель как эта структура ниже, и я хочу инициализировать это внутри 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;
}
...