получение ошибки: тип аргумента 'Product' не может быть назначен типу параметра 'Map - PullRequest
0 голосов
/ 10 мая 2019

Я пытаюсь добавить новые данные, но получаю ошибку:

The argument type 'Product' can't be assigned to the parameter type 'Map<String, dynamic>

Вот что я пытаюсь сделать: У меня есть форма с просто 2 TextField с Я объявил карту с данными

final Map<String, dynamic> _formData = {
      'title': null,
      'content': null,
    };

и после этого я использую блок для передачи данных конструктору модели Product

RaisedButton(
                child: Text('Add'),
                  onPressed: () {
                  bloc.createData(
                    Product(
                        title: _formData['title'],
                        content: _formData['description'],
                  )
                  );
                }
              ),

в блоке передаю провайдеру так:

  void createData(Product product) async {
    String id = await db.createData(product);
    _inId.add(id);
  }

И вот оно:

Future createData(Product product) async {
    DocumentReference ref = await db.collection("product").add(product); //error: The argument type 'Product' can't be assigned to the parameter type 'Map<String, dynamic>
    print(ref.documentID);
    return ref.documentID;
}

, так как я использую collection_reference, и он использует карту, я не могу использовать модель аргумента Products, которая построена так:

class Product {

  final String title, content;

  Product({this.title, this.content});

}

1 Ответ

0 голосов
/ 10 мая 2019

Вам необходимо преобразовать продукт в Карту

Пример:

Future createData(Product product) async 
{ 
    await db.collection("product").add( _convertProductToMap(product));
}

Map<String, dynamic> _convertProductToMap( Product product )
{
    Map<String, dynamic> map = {};
    map['title'] = product.title;
    map['content'] = product.content;

   return map;
}

вам также нужно будет преобразовать обратно карту в объект Product после получения данных из базы данных

...