Я хочу обновлять свое приложение с помощью API во флаттере. Как я могу это сделать? ..!Мой бэкэнд в MySQL и API в PHP - PullRequest
0 голосов
/ 28 февраля 2019

Я хочу, чтобы мое приложение обновлялось в режиме реального времени с использованием последних данных из API, Мой API находится в PHP, MySQL

Мой код выглядит следующим образом

Я пробовал много методов, но не могуразобраться,

Мои данные поступают в формате JSON.

Класс BLoC

class Bloc{
  final _repositary = Repository();
  final _userFetcher = PublishSubject<List<UserData>>();

  Observable<List<UserData>> get allUsers => _userFetcher.stream;

  void fetchAllUsers() async {
    List<UserData> userData= await _repositary.fetchAllUsers();
    _userFetcher.sink.add(userData);
  }

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

final bloc=Bloc();

Класс репозитория

class Repository{
  final manageUsers = ManageUsersModel();

  Future<List<UserData>> fetchAllUsers() => manageUsers.getData();
}

Метод вызова API

Future<List<UserData>> getData() async {
    List<UserData> user = new List<UserData>();
    String url = GenerateString.genStringMngUsers();
    var response = await http.get(
      Uri.encodeFull(url),
    );

    List data = jsonDecode(response.body);
      user.add(userData);
    }

    return user;
  }

Мой пользовательский интерфейс

       StreamBuilder(
            stream: bloc.allUsers,
            builder: (BuildContext context, AsyncSnapshot snapshot) {
              if (snapshot.data == null) {
                return Center(
                 child: CircularProgressIndicator(),
                );
              } else {
                return ListView.builder(
                  itemCount: snapshot.data.length,
                    return UserDetailTile(snapshot.data);
                  },
                );
              }
            },
          ),
...