Как добавить элементы в пользовательский список в Flutter?

#flutter

#flutter

Вопрос:

Я знаю, что добавить целое число в список целых чисел — это:

 List<int> myList = [];
myList.add(1);
  

Я знаю, что добавить строку в список строк:

 List<String> myList = [];
myList.add("Hello World");
  

Но как мне добавить набор в свой пользовательский список?

 Class MyList {
  String name;
  int price;

MyList({
  this.name,
  this.price,
 });
}
  

Я хочу, чтобы в конце myList было что-то вроде этого:

 List<MyList> myList = [
  MyList(
    name: 'Chorizo Canapes',
    price: 12.99,
  ),
  MyList(
    name: 'Cucumber',
    price: 8.99,
  ),
  MyList(
    name: 'Eggs',
    price: 11.99,
  ),
];
  

Заранее спасибо.

РЕДАКТИРОВАТЬ: Извините, я не ясно выразился. Я хочу сделать что-то вроде этого:

 List<MyList> myList = [];
myList.add({name: 'patato', price: 10})
  

Как мне это сделать?

Комментарии:

1. использование dynamic ..

2. Обратите внимание, что цена яиц, 11,99, не является целым числом, поэтому вам следует изменить цену на double . Кроме этого, что не работает?

3. @Richard Heap, спасибо за исправление. Я хочу создать пустой список, а затем добавить в него элемент. Что-то вроде: List<myList> myList = []; myList.add({имя: ‘patato’, цена: 10}).

Ответ №1:

Так в чем проблема? Вы можете создать этот класс, и вы можете создать этот список. Именно то, что вы хотите.

Просто обратите внимание:

  1. Переписать «Класс» => «класс»
  2. Измените «price» с int на double (как сказал Ричард Хип)
  3. Не забудьте импортировать файл classes в файл, в котором вы создаете список, следующим образом: ‘import ‘package:project/myList.dart’;’

Рабочий код:

 class MyList {
  String name;
  double price;

MyList({
  this.name,
  this.price,
 });
}

List<MyList> myList = [
  MyList(
    name: 'Chorizo Canapes',
    price: 12.99,
  ),
  MyList(
    name: 'Cucumber',
    price: 8.99,
  ),
  MyList(
    name: 'Eggs',
    price: 11.99,
  ),
];
  

Upd: Также вы можете пометить параметр в конструкторе класса как «@required» (с добавлением «import ‘package:flutter / widgets.dart’;»), чтобы сделать этот параметр обязательно обязательным.

Пример:

 import 'package:flutter/widgets.dart';

class MyList {
  String name;
  double price;

MyList({
  @required this.name,
  this.price,
 });
}

List<MyList> myList = [
  MyList(
    name: 'Chorizo Canapes',
    price: 12.99,
  ),
  MyList(//Error: need parameter "name"
    price: 8.99,
  ),
  MyList(
    name: 'Eggs',
    price: 11.99,
  ),
];
  

Upd2: Для создания собственных списков вы можете написать

     List<MyList> myList2 = List<MyList>();
    myList2.add(
      MyList(
        name: 'Chorizo Canapes',
        price: 12.99,
      ),
    );
  

или

     List<MyList> myList3 = [];
    myList3.add(
      MyList(
        name: 'Cucumber',
        price: 8.99,
      ),
    );
  

Комментарии:

1. Привет, Алекс, спасибо за ваше предложение. Я не ясно выразился в своем сообщении. Я хочу создать пустой список, а затем использовать что-то вроде myList.add(), чтобы добавить элемент в список в другом виджете.

2. Привет! Обновленный ответ

3. Вы также должны практиковать хорошие соглашения об именовании. Ваш тип MyList подразумевает, что один элемент — это много элементов. Это должно быть больше похоже List<Item> myList2 = List<Item>[] .

4. Привет, Алекс, я изо всех сил пытаюсь сделать то же самое. Я создал класс, импортировал класс и объявил пользовательский список, как вы сказали. когда я попытался добавить, в предложениях отображалось «nn, not null и т. Д.». Где я ошибаюсь?

5. Я понял, что initState() {} решил проблему. Но зачем это нужно?