Как исправить значение типа future <int>нельзя присвоить переменной типа int - PullRequest
0 голосов
/ 11 октября 2018

Я пытаюсь вставить строку в таблицу в базе данных с помощью флаттера, и когда я присваиваю возвращаемое значение новой переменной, я получаю следующее сообщение об ошибке

 a value of type future<int> can not be assigned to a variable of type int

этофункция для вставки новой строки

Future<int> addContact(String contact_name, String contact_phone) async {
    Database c = await getConnection;
    Map<String, dynamic> contact = getMap(contact_name, contact_phone);
    return await c.insert("contacts", contact);
  }

и вот откуда я получаю возвращенные данные

int result=db.addContact(name, phone);

Ответы [ 3 ]

0 голосов
/ 11 октября 2018

Либо используйте FutureBuilder, либо что-то вроде этого

int value; //should be state variable. As we want to refresh the view after we get data

@override  
Widget build(BuildContext context) {
  db.addContact(name, phone).then((value) {
       setState(() {this.value = value;});
  })
 return ....
0 голосов
/ 06 февраля 2019

Функция addContact имеет некоторую операцию, которая будет возвращать значение после завершения операции, поэтому сделайте блок завершения здесь .....

addContact(contact_name, contact_phone).then((value) {
  //this 'value' is in int
  //This is just like a completion block
});
0 голосов
/ 11 октября 2018

Вы можете использовать FutureBuilder.Вот пример:

@override  
Widget build(BuildContext context) {
    return new FutureBuilder (
        future: loadFuture(), //This is the method that returns your Future
        builder: (BuildContext context, AsyncSnapshot snapshot) {
          if (snapshot.hasData) {
            if (snapshot.data) {               
              return customBuild(context);  //Do stuff and build your screen from this method
            }
          } else {
            //While the future is loading, show a progressIndicator
            return new CustomProgressIndicator();
          }
        }
    );  
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...