Flutter 为什么可以';t I在“颤振”的情况下,在膨胀板中加载实际数据;只有静态成员才能在初始值设定项“中访问”;?
我把官方文件作为建立我自己的文件的参考。我很难让它们工作,也无法处理我的数据。我已经尝试将我的小部件接收到的一些数据传递到它的构造函数中,以便在生成面板列表时使用。我希望这些代码片段足够了,如果没有,我可以添加更多 这里是错误弹出的地方(当尝试引用widget.contracts时)Flutter 为什么可以';t I在“颤振”的情况下,在膨胀板中加载实际数据;只有静态成员才能在初始值设定项“中访问”;?,flutter,dart,Flutter,Dart,我把官方文件作为建立我自己的文件的参考。我很难让它们工作,也无法处理我的数据。我已经尝试将我的小部件接收到的一些数据传递到它的构造函数中,以便在生成面板列表时使用。我希望这些代码片段足够了,如果没有,我可以添加更多 这里是错误弹出的地方(当尝试引用widget.contracts时) class FinancialAbContent扩展StatefulWidget{ 最终合同清单; 最后一人旅行干事; 财务内容({this.contracts,this.travelOfficer}); @凌驾
class FinancialAbContent扩展StatefulWidget{
最终合同清单;
最后一人旅行干事;
财务内容({this.contracts,this.travelOfficer});
@凌驾
_FinancialAbContentState createState()=>\u FinancialAbContentState();
}
类_FinancialAbContentState扩展状态{
List expansionPanels=generateExpansionPanels(widget.contracts);
@凌驾
小部件构建(构建上下文){
...
这就是我打算用来构建面板列表的内容,它位于_financialaltabcontentState中
Widget _buildPanelList() {
return ExpansionPanelList(
expansionCallback: (int index, bool isExpanded) {
setState(() {
expansionPanels[index].isExpanded = !isExpanded;
});
},
children: expansionPanels.map<ExpansionPanel>((ExpandableItem item) {
return ExpansionPanel(
headerBuilder: (BuildContext context, bool isExpanded) {
....
isExpanded: item.isExpanded,
);
}).toList(),
);
Widget\u buildPanelList(){
返回ExpansionPanelist(
expansionCallback:(int索引,bool扩展){
设置状态(){
expansionPanels[index].isExpanded=!isExpanded;
});
},
子项:expansionPanels.map((ExpansableItem){
返回扩展面板(
headerBuilder:(BuildContext上下文,bool isExpanded){
....
isExpanded:item.isExpanded,
);
}).toList(),
);
这是可展开项的代码
import 'contract.dart';
class ExpandableItem {
ExpandableItem({
this.isExpanded = false,
this.panelData
});
bool isExpanded;
Contract panelData;
}
List<ExpandableItem> generateExpansionPanels(List<Contract> panelsData) {
return List.generate(panelsData.length, (int index) {
return ExpandableItem(
panelData: panelsData[index],
);
});
}
导入“contract.dart”;
类可扩展项{
可扩展项({
this.isExpanded=false,
这是panelData
});
布尔展开;
合同数据;
}
列表生成扩展面板(列表面板数据){
返回列表.generate(panelsData.length,(int索引){
返回可扩展项(
panelData:panelsData[索引],
);
});
}
将此行移动到生成方法中:
List<ExpandableItem> expansionPanels = generateExpansionPanels(widget.contracts);
List expansionPanels=generateeexpansionpanels(widget.contracts);
或者,如果希望只执行一次,请在方法中执行此操作:
class _FinancialTabContentState extends State<FinancialTabContent> {
List<ExpandableItem> expansionPanels;
@override
void initState() {
super.initState();
expansionPanels = generateExpansionPanels(widget.contracts);
}
@override
Widget build(BuildContext context) {...}
}
class\u FinancialAbContentState扩展状态{
列出扩展面板;
@凌驾
void initState(){
super.initState();
expansionPanels=generateeexpansionpanels(widget.contracts);
}
@凌驾
小部件生成(BuildContext上下文){…}
}
阅读详细描述小部件生命周期的文档。我自己尝试了第一件事,但面板无法展开(请再试一次,以防错过某些内容)。做构造函数的事情会给我同样的错误。尝试使列表非最终的,并将其分配到构造函数的主体上,而不是初始值设定项上。对不起,我很困惑。这是什么意思?getter“contracts”是在null上调用的。Receiver:null尝试调用:contracts这是我得到的抱歉,我也不擅长flift:)查看编辑后的答案,现在应该可以了…请务必阅读文档(答案中提供的链接),这样您就不会被这样的基本问题所困扰。
class _FinancialTabContentState extends State<FinancialTabContent> {
List<ExpandableItem> expansionPanels;
@override
void initState() {
super.initState();
expansionPanels = generateExpansionPanels(widget.contracts);
}
@override
Widget build(BuildContext context) {...}
}