Список запросов Rx Flutter от JsonPalceHolder - PullRequest
0 голосов
/ 13 февраля 2019

Я пытаюсь получить List из jsonPlaceHolder с помощью потока flutter rxdart и пытаюсь применить к нему шаблон блока.

этот класс, который отвечает за получение ответа от api

import 'dart:async';
import 'dart:convert';
import 'package:http/http.dart' as http;
import '../models/post_item.dart';

class ItemApi {

  Future<List<JsonItem>> getPost() async {
    String _url = 'https://jsonplaceholder.typicode.com/posts';

    final _response = await http.get(_url);

    if (_response.statusCode == 200) {
      return (json.decode(_response.body) as List)
          .map((jsonItem) => JsonItem.fromJson(jsonItem))
          .toList();
    }
  }

}

, который я используюкласс репозитория для переноса с использованием класса ItemApi

import 'json_item_request.dart';
import '../models/post_item.dart';

class Repository{

  final jsonItemResponse = ItemApi();
  Future<List<JsonItem>> getItem() => jsonItemResponse.getPost();


}

в последний раз, когда я использовал класс блока, который отвечает за получение данных и устанавливает его внутри PublishSubject

import '../models/post_item.dart';
import '../resouces/repository.dart';
import 'package:rxdart/rxdart.dart';

class JsonBloc {
  final _repository = Repository();
  final _streamOfJsonList = PublishSubject<List<JsonItem>>();


  Observable<List<JsonItem>> get jsonList=> _streamOfJsonList.stream;


  fetchAllPost() async{
    Future<List<JsonItem>> list = _repository.getItem();

  }

  dispose(){
    _streamOfJsonList.close();
  }


}

Мой вопрос заключается в том, как я могу установить ответвнутри переменной _streamOfJsonList, чтобы использовать ее при изменении списка.

1 Ответ

0 голосов
/ 13 февраля 2019

Похоже, у вас уже есть все движущиеся части?Если это так, вам просто нужно добавить список элементов в PublishSubject:

void fetchAllPost() async {
  List<JsonItem> list = await _repository.getItem();
  _streamOfJsonList.add(list);
}

Это вызовет обратный вызов onListen с новым списком для всего, что слушает поток.

...