如何从另一个类访问列表的长度

Posted

技术标签:

【中文标题】如何从另一个类访问列表的长度【英文标题】:How to access length of a list from another Class 【发布时间】:2019-12-27 14:14:14 【问题描述】:

在我正在构建的应用程序中,我添加了您可以在 peopleCheck 属性中看到的人名。 现在我想创建一个新列表,如果每个人在这里与否,它都会包含一个布尔值。 (false 不在这里,反之亦然) 我声明了一个新列表“chk1”以及为每个人填写的内容,默认为 false,我想让整个列表的长度与 peopleCheck 列表的长度相同。 我该怎么做? 我尝试使用“widget.peopleCheck.length()”,但它返回两个错误。 1. 在初始化器中只能访问静态成员。 2.表达式不计算为函数,因此无法调用。

提前致谢。

import 'package:flutter/material.dart';

class PersonCheck extends StatefulWidget 
  final List<String> peopleCheck;
  PersonCheck(Key key, this.peopleCheck) : super(key: key);
  //PersonCheck(this.peopleCheck);

  @override
  _PersonCheckState createState() => _PersonCheckState();


class _PersonCheckState extends State<PersonCheck> 

  List<bool> chk1 =List.filled(widget.peopleCheck.length(), false);




  @override
  Widget build(BuildContext context) 

    return Scaffold(
      appBar: AppBar(
        centerTitle: true,
        title: Text(
          'People Now',
          style: TextStyle(fontSize: 30),
        ),
      ),
      body: ListView.builder(
        itemCount: this.widget.peopleCheck.length,
        itemBuilder: (context, value) 
          return Card(
            color: Colors.amberAccent[200],
            elevation: 3,
            child: Container(
              child: ListTile(
                leading: Text(value.toString()),
                title: Text(
                  widget.peopleCheck[value],
                ),
                trailing: Checkbox(
                  value: chk1[value],
                  onChanged: (bool val) , //(bool val) => setState(() => chk1[value] = val),
                ),
              ),
            ),
          );
        ,
      ),
      floatingActionButtonLocation: FloatingActionButtonLocation.centerFloat,
      floatingActionButton: FloatingActionButton(
        onPressed: () ,
        child: Icon(Icons.check),
      ),
    );
  

/*

 for (int i=0; i<widget.peopleCheck.length();i++)

  



*/

【问题讨论】:

【参考方案1】:

长度是列表的一个属性,所以你可以这样做:

widget.peopleCheck.length

你得到一个错误,因为长度不是一个函数

你需要在build方法中访问widget,你可以这样做:

   List<bool> chk1;

   Widget build(BuildContext context) 
     chk1  = List.filled(widget.peopleCheck.length, false);

      

【讨论】:

谢谢。但我仍然收到无法使用小部件的错误。 (在初始化程序中只能访问静态成员。) 太好了,祝你有美好的一天。

以上是关于如何从另一个类访问列表的长度的主要内容,如果未能解决你的问题,请参考以下文章

如何从另一个 QML 访问和控制 ListModel 的内容

如何将自动填充的表单记录(从另一条记录创建)添加到访问表中?

如何从另一个类访问小部件

Java - 使用另一个类的静态列表

如何从另一个类访问mysql数据库中的变量?

如何从另一个类访问函数?