Error BlocProvider.of()使用不包含UserBloc类型的Bloc的上下文调用

问题描述 投票:0回答:1

image

所有人都知道该怎么办?我制作了一个用户的listview,它应该显示appbar,tabbar用户列表,用户组以及所有用户的列表。

[当我不使用模型和存储库,而只是将数据手动放在users_page.dart上时,一切都很好,显示了布局。但是,发生idk怎么办。

帮助。

flutter repository-pattern bloc
1个回答
0
投票

Error Picture

这是我的UsersBloc:

import 'package:bloc/bloc.dart';
import 'package:merchant/feature/bloc/users/users_event.dart';
import 'package:merchant/feature/bloc/users/users_state.dart';

class UsersBloc
extends Bloc < UsersEvent, UsersState > {
  int currentIndex = 0;

  @override
  UsersState get initialState => UsersLoading();

  @override
  Stream < UsersState > mapEventToState(UsersEvent event) async * {
    if (event is UsersStarted) {
      this.add(UsersTapped(index: this.currentIndex));
    }

    if (event is UsersTapped) {
      this.currentIndex = event.index;
      yield CurrentIndexChanged(currentIndex: this.currentIndex);
      yield UsersLoading();

      if (this.currentIndex == 0) {
        //        String data = await UsersRepository();
        yield UsersListLoaded(text: "UsersList");
      }

      if (this.currentIndex == 1) {
        //        String data = await UsersRepository();
        yield UsersGroupLoaded(text: "UsersGroup");
      }

      if (event is UsersDetailTapped) {
        yield UsersDetailLoaded(text: "UserDetail");
      }
    }
  }
}

这是我的UsersPage:

import 'package:flutter/material.dart';
import 'package:flutter_bloc/flutter_bloc.dart';
import 'package:merchant/component/widget/loading_widget.dart';
import 'package:merchant/feature/bloc/users/users_bloc.dart';
import 'package:merchant/feature/bloc/users/users_event.dart';
import 'package:merchant/feature/bloc/users/users_state.dart';
import 'package:merchant/feature/splash_page.dart';
import 'package:merchant/feature/ui/users/users_list_tab.dart';
import 'package:merchant/feature/ui/users/users_group_tab.dart';




class UsersPage extends StatelessWidget {
  // UsersPage(String s);

  final String text;

  const UsersPage(this.text): super();
  @override
  Widget build(BuildContext context) {


    return DefaultTabController(
      length: 2,
      child: Scaffold(
        appBar: AppBar(
          title: Text(
            "Users (UKSW)",
            style: TextStyle(color: Colors.white),
          ),
          bottom: TabBar(
            onTap: (index) => BlocProvider.of < UsersBloc > (context).add(UsersTapped(index: index)),
            isScrollable: true,
            labelColor: Colors.white,
            unselectedLabelColor: Colors.black54,
            tabs: [
              new Tab(text: "User List"),
              new Tab(text: "User Group"),
            ],
          ),
          actions: [
            IconButton(icon: Icon(Icons.search),
              onPressed: () {}
            )
          ]
        ),
        body: BlocBuilder < UsersBloc, UsersState >

        ( //bloc: BlocProvider.of<UsersBloc>(context),
          builder: (context, state) {
            if (state is UsersLoading) {
              return LoadingWidget(visible: true);
            }
            if (state is UsersListLoaded) {
              return UsersList();
            } else if (state is UsersGroupLoaded) {
              return UsersGroup();
            }
            //else if (state is UsersDetailLoaded) {
            // detail = true;
            // return UsersDetail(name: "nisa", username: "@nisa",);
            // }
            return SplashPage();
          }

        )
      ));

  }
}

这是我的users_model.dart:

import 'dart:convert';

class UsersModel {
  String name, username;
  

  UsersModel({
    this.name,
    this.username
  });
  
  factory UsersModel.fromJson(Map<String, dynamic> json) => UsersModel(
    name: json['name'],
    username: json['username']
  );

}
© www.soinside.com 2019 - 2024. All rights reserved.