如何从包含对象列表的对象中删除对象?

时间:2019-06-26 11:09:53

标签: flutter dart

我有航班和价格数据。从波纹管中可以看到,我创建了FlightPrice类来保存此数据。 Search result类用作容器(结果)来保存相关联的航班inboundoutbound的价格。

class SearchResult {
  Flight inbound, outbound;
  Price price;
  SearchResult(this.inbound, this.outbound, this.price);
}
class Flight{
  var flightDuration;
  var departureAirportName;
  var arrivalAirportName;
  ...
}
class Price{
  double totalAmount;
}

在这里,我创建了SliverList来显示结果。 JourneyResult只是一个小部件,可根据获取的数据创建外观。

如果用户滑动并删除,我想删除一个listTile。在这种情况下,我想删除索引0中的inbound。为此,我将其设置为null,但得到getter was call on null on flightDuration, ...。我将childCount设置为1是因为我只想显示第一个索引,因为我只想显示第一个索引中的数据。如果用户决定删除inbound详细信息,我想删除。我不知道为什么我将childCount设置为1后再次调用它。 如何从listTile中删除inbound数据?

List<SearchResult> searchResult = [];
                //inbound result

                  StatefulBuilder(
                  builder: (innerContext, innerSetState) => SliverList(
                        delegate: SliverChildBuilderDelegate(
                          (context, i) => ListTile(
                                title: Slidable(
                                  actionPane: SlidableDrawerActionPane(),
                                  actionExtentRatio: 0.25,
                                  child: new JourneyResult(
                                      0xe195,
                                      searchResult[0]
                                          .inbound
                                          .departureAirportName,
                                      searchResult[0]
                                          .inbound
                                          .arrivalAirportName,
                                      searchResult[0]
                                          .inbound
                                          .flightDuration,
                                      searchResult[0].price.totalAmount                                          ),
                                  secondaryActions: <Widget>[
                                    IconSlideAction(
                                      caption: 'Remove',
                                      color: Colors.red,
                                      icon: Icons.delete,
                                      onTap: () {
                                        innerSetState(() {                                     
                                           searchResult[0].inbound 
                                             =null;
                                        });
                                      },
                                    ),
                                  ],
                                ),
                              ),
                          childCount: 1,
                        ),
                      ),
                ),


                //outbound result
                StatefulBuilder(....)

0 个答案:

没有答案