#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:
Так в чем проблема? Вы можете создать этот класс, и вы можете создать этот список. Именно то, что вы хотите.
Просто обратите внимание:
- Переписать «Класс» => «класс»
- Измените «price» с int на double (как сказал Ричард Хип)
- Не забудьте импортировать файл 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() {} решил проблему. Но зачем это нужно?