Futurebuild с Blo c в флаттере создает проблему для <Observable> - PullRequest
0 голосов
/ 28 марта 2020

Ниже мой код: .dart файл

@override
  Widget build(BuildContext context) {
    bloc.fetchUserTypevalue();
    return Scaffold(
      body: FutureBuilder(
        **future: bloc.usertype,** // This is problematic line because bloc.usertype is <Observable<Future>>  and this wants future in return. 
        builder: (context, AsyncSnapshot<
            UserTypeWithUserResponse> snapshot){
          if(snapshot.hasData){
            return buildList(snapshot);
          }else if(snapshot.hasError){
            print("error == > " +snapshot.error);
            return Text(snapshot.error.toString());
          }
          return Center(child: CircularProgressIndicator());
        }
      )
    );

  }

Blo c .dart файл

class UserTypeBloc {
  final _repository = Repository();

  final _usertypeFetcher = PublishSubject<Future<UserTypeWithUserResponse>>();

  Observable<Future<UserTypeWithUserResponse>> get usertype => _usertypeFetcher.stream;

  fetchUserTypevalue() async {
    Future<UserTypeWithUserResponse>  itemModel = await _repository.fetchusertypeRep();
    _usertypeFetcher.sink.add(itemModel);
  }

  dispose() {
    _usertypeFetcher.close();
  }
}

Репозиторий: fetchusertypeRep () => ApiProviderObj.fetchusertype ();

.dart файл для вызова API:

Future<UserTypeWithUserResponse> fetchusertype() async {
    var api_instance = new ApiClient();
    authToken = "XYZ";
      UserTypeWithUserResponse responsevalue;
      defaultApiClient.getAuthentication<OAuth>('BearerAuth')
        ..accessToken = authToken;
      try {
        new UserTypeApi(defaultApiClient).userTypeGet().then((responsevalue) {
          return responsevalue;
        });
      } catch (error) {
        throw Exception('error fetching user');
      };

  }

Проблема: future: blo c .usertype,

Я хотел пользователя futurebuilder но я не могу использовать его в blo c.

...