如何从另一个类访问列表的长度
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 的内容