代码之家  ›  专栏  ›  技术社区  ›  DolDurma

在BlocBuilder中初始化类作为模型并获取错误

  •  0
  • DolDurma  · 技术社区  · 6 年前

    在我的应用程序中,我有如下结构的模型,我想在内部初始化它 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],状态:

    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;
    }
    
    0 回复  |  直到 6 年前