首页 > 解决方案 > 在 BlocBuilder 中将类初始化为模型并出现错误

问题描述

在我的应用程序中,我有如下结构的模型,我想在内部初始化它BlocBuilder以更新 ui 元素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");
        },
      ),
    );
  }
}

我不想制作一些变量,例如nameemail或者将它们avatart填充到内部BlocBuilder以使用它们,因为我有这个类模型,我认为我可以在内部初始化BlocBuilder以使用它,

不幸的是,当我运行应用程序时出现此错误:

构建 BlocBuilder(dirty, dependencies: [MediaQuery], state: _BlocBuilderBaseState#2342d): Invalid argument(s) 引发了以下 ArgumentError

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;
}

标签: dartflutterbloc

解决方案


推荐阅读