Данные, полученные от Laravel сервера API, не отображаются на экране Flutter - PullRequest
0 голосов
/ 29 мая 2020

Я пытаюсь получить данные с сервера Laravel php и показать их на экране входа в систему Flutter, который после успешного входа в систему перенаправляет на панель управления, но данные не отображаются, и на экране продолжает загружаться только значок загрузки. *

Вот код входа в систему:

class DashboardState extends State<Dashboard>{

  DataBaseHelper dataBaseHelper = new DataBaseHelper();
  @override
  Widget build(BuildContext context) {
    // TODO: implement build
    return MaterialApp(
      title: 'Dashboard',
      home: Scaffold(
        appBar: AppBar(
          title: Text('Dashboard'),
        ),
        floatingActionButton: FloatingActionButton(
          onPressed: ()=>
              Navigator.of(context).push(new MaterialPageRoute(
                builder: (BuildContext context)=> new AddData(),
              ))
          ,
          child: Icon(Icons.add),
        ),
        body: Container(
          child: FutureBuilder<List>(
            future: dataBaseHelper.getData(),
            builder: (context, snapshot){
              if(snapshot.hasError) print(snapshot.error);
              return snapshot.hasData
                  ? new ItemList(list: snapshot.data)
                  : new Center(child: CircularProgressIndicator(),);
            },
          )
        ),
      ),
    );
  }

}

А вот функция getData (), которая получает данные с сервера и находится в databasehelper:

Future<List> getData() async{
final prefs = await SharedPreferences.getInstance();
final key = 'token';
final value =  prefs.get(key) ?? 0;

var url = '$serverUrl/cars/';
final response = await http.get(url,
    headers: {
      'Accept':'application/json',
      'Authorization' : 'Bearer $value'
    },

);
return json.decode(response.body);
}

Примечание. Я получаю следующее сообщение на консоли, когда пользователь вошел в систему и go на панели управления:

I/flutter ( 9962): type '_InternalLinkedHashMap<String, dynamic>' is not a subtype of type 'FutureOr<List<dynamic>>'

1 Ответ

1 голос
/ 29 мая 2020

Проблема: FutureBuilder<List> ожидает List, а getData возвращает InternalLinkedHashMap<String, dynamic>. Верните объектную модель, чтобы улучшить читаемость кода, и ожидайте тот же объектный класс, например, FutureBuilder<CustomModel>. Отметьте это .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...