如何获取通常使用 widget.[etc] 接收的数据?
How do I get data that is usually received with widget.[etc]?
我正在尝试使用地图中的数据创建一个 ExpansionPanel。我的数据是在一个单独的函数中从 API 创建的,并使用 this.branchData
传递数据。我在下面附上了我的代码:
class RunList extends StatefulWidget {
// Creates a list of packages.
final Map branchData;
// Defines what needs to be passed into the class. Needs the branchNames list.
RunList(this.branchData, {Key? key}) : super(key: key);
@override
// Creates mutable state for that widget at a given location in the tree.
// Returns _ProjectDropdownState() which extends the State.
State<RunList> createState() => _RunListState();
}
但是,我试图在一个名为 generateItems 的单独函数中访问 branchData,但我收到错误“未定义的名称 'branchData'”。我可以使用 widget.branchData 访问 branchData,但是,我不能在 generateItems 中使用它。有什么方法可以让代码中其他地方的 branchData 可用于 generateItems?我在下面附上了 generateItems:
List<Item> generateItems(int numberOfItems) {
List<Item> runData = [];
// Create Item
var run = new Item (
headerValue: branchData["refs/heads/main"][branchData["branchRuns"]["refs/heads/main"][0]].commitTitle,
expandedValue: 'Nothing to see yet...',
);
runData.add(run);
return runData;
}
因此您在 class RunList
.
中有名为 branchData
的数据
案例 1:如果您在 _RunListState()
的构建方法中调用 generateItems
函数:
在调用函数 generateItems()
时使用 widget.branchData
从小部件传递数据(这是来自父小部件的数据实例,此处为 RunList)。现在您可以在异步函数的情况下等待结果,或者继续您的程序。
案例 2:从另一个小部件调用 generateItems
函数:
我的方法是使用 provider implementation
。当您在创建 RunList class 时获得对 branchData
的访问权限时,将值发送给提供者,以便您可以从小部件树中的任何位置访问它。 YT 上有多个针对此实现的教程。
您可以使用 List.generate
创建小部件列表,而不是使用外部函数来创建它们
例如:
List.generate(branchData["refs/heads/main"][branchData["branchRuns"]]["refs/heads/main"].length, (index) {
return Item (
headerValue: branchData["refs/heads/main"][branchData["branchRuns"]]["refs/heads/main"][index].commitTitle,
expandedValue: 'Nothing to see yet...',
);
});
我正在尝试使用地图中的数据创建一个 ExpansionPanel。我的数据是在一个单独的函数中从 API 创建的,并使用 this.branchData
传递数据。我在下面附上了我的代码:
class RunList extends StatefulWidget {
// Creates a list of packages.
final Map branchData;
// Defines what needs to be passed into the class. Needs the branchNames list.
RunList(this.branchData, {Key? key}) : super(key: key);
@override
// Creates mutable state for that widget at a given location in the tree.
// Returns _ProjectDropdownState() which extends the State.
State<RunList> createState() => _RunListState();
}
但是,我试图在一个名为 generateItems 的单独函数中访问 branchData,但我收到错误“未定义的名称 'branchData'”。我可以使用 widget.branchData 访问 branchData,但是,我不能在 generateItems 中使用它。有什么方法可以让代码中其他地方的 branchData 可用于 generateItems?我在下面附上了 generateItems:
List<Item> generateItems(int numberOfItems) {
List<Item> runData = [];
// Create Item
var run = new Item (
headerValue: branchData["refs/heads/main"][branchData["branchRuns"]["refs/heads/main"][0]].commitTitle,
expandedValue: 'Nothing to see yet...',
);
runData.add(run);
return runData;
}
因此您在 class RunList
.
branchData
的数据
案例 1:如果您在 _RunListState()
的构建方法中调用 generateItems
函数:
在调用函数 generateItems()
时使用 widget.branchData
从小部件传递数据(这是来自父小部件的数据实例,此处为 RunList)。现在您可以在异步函数的情况下等待结果,或者继续您的程序。
案例 2:从另一个小部件调用 generateItems
函数:
我的方法是使用 provider implementation
。当您在创建 RunList class 时获得对 branchData
的访问权限时,将值发送给提供者,以便您可以从小部件树中的任何位置访问它。 YT 上有多个针对此实现的教程。
您可以使用 List.generate
创建小部件列表,而不是使用外部函数来创建它们
例如:
List.generate(branchData["refs/heads/main"][branchData["branchRuns"]]["refs/heads/main"].length, (index) {
return Item (
headerValue: branchData["refs/heads/main"][branchData["branchRuns"]]["refs/heads/main"][index].commitTitle,
expandedValue: 'Nothing to see yet...',
);
});