【问题标题】:How to store user created objects in a List Flutter如何将用户创建的对象存储在 List Flutter 中
【发布时间】:2021-04-06 11:30:35
【问题描述】:

我正在尝试将用户创建的对象存储在要在 ListView 中显示的列表中,但出现错误:

它给我的错误是: 无法在初始化程序中访问实例成员 contact1。 尝试用不同的expressiondartimplicit_this_reference_in_initializer替换对实例成员的引用

如何实现将用户对象存储在 List 中?

【问题讨论】:

  • 请添加代码而不是图像。
  • 将 myList 放入 build 方法中

标签: flutter dart flutter-layout


【解决方案1】:

你应该这样做:

这是一个示例 根据您的数据更改它

import 'package:flutter/material.dart';

class Contact {
  final String id;
  final int number;
  final String role;

  Contact({this.id, this.number, this.role});
}

class Widget1 extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    var contact1 = Contact(id: "fahmi", number: 00, role: "admin");
    var contact2 = Contact(id: "fahmi", number: 00, role: "admin");
    var contact3 = Contact(id: "fahmi", number: 00, role: "admin");
    final List<Contact> myList = [contact1, contact2, contact3];
    return Container();
  }
}

【讨论】:

    【解决方案2】:

    您无法访问位于初始化程序位置的任何对象。只需将项目设置为initState 内的myList 或任何方法。最好的方法是将其设置在 initState 方法中。因为它只会被调用一次。

    1. 只需在无状态类之外初始化myList

    2. 在 initState 中将项目添加到 myList

    class ContactsPage extends StatelessWidget {
    
     final List<Contact> myList = [];
    
     final Contact contact1 = Contact(id: "fahmi", number: 00, role: "admin");
     final Contact contact2 = Contact(id: "fahmi", number: 00, role: "admin");
     final Contact contact3 = Contact(id: "fahmi", number: 00, role: "admin");
    
     @override
     void initState() {
       super.initState();
       myList.addAll([contact1, contact2, contact]);
     }
    }
    

    【讨论】:

      猜你喜欢
      • 2018-11-14
      • 2020-11-27
      • 1970-01-01
      • 2014-01-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多