如何在 Flutter 中添加项目到自定义列表?

576*_*659 7 flutter

我知道将整数添加到整数列表是:

List<int> myList = [];
myList.add(1);
Run Code Online (Sandbox Code Playgroud)

我知道将字符串添加到字符串列表是:

List<String> myList = [];
myList.add("Hello World");
Run Code Online (Sandbox Code Playgroud)

但如何将一组添加到我的自定义列表中?

Class MyList {
  String name;
  int price;

MyList({
  this.name,
  this.price,
 });
}
Run Code Online (Sandbox Code Playgroud)

我希望 myList 最后是这样的:

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

提前致谢。

编辑:抱歉我没有说清楚。我想做这样的事情:

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

我该怎么做呢?

Ale*_*nov 14

那么有什么问题呢?您可以创建此类,也可以创建此列表。正是您想要的。

请注意:

  1. 重写“类”=>“类”
  2. 将“价格”从 int 更改为 double (就像 Richard Heap 所说)
  3. 不要忘记将类文件导入到创建列表的文件中,如下所示:'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,
  ),
];
Run Code Online (Sandbox Code Playgroud)

更新:您还可以将类构造函数中的参数标记为“@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,
  ),
];
Run Code Online (Sandbox Code Playgroud)

Upd2:要创建自己的列表,您可以编写

    List<MyList> myList2 = List<MyList>();
    myList2.add(
      MyList(
        name: 'Chorizo Canapes',
        price: 12.99,
      ),
    );
Run Code Online (Sandbox Code Playgroud)

或者

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