所以,我有一个具有无限宽度(行)的小部件。为了用项目填充小部件,我使用水平轴的 Lisview 构建器。我还可以使用具有水平轴和 Row 作为子项的 SingleChildScrollview 。
如果有几个项目,屏幕的宽度不会被填满,那就太好了。但是,当有很多项目时,列表视图变得“可滚动”,我可以向右滚动以显示项目。
我想知道列表是否可滚动(如果溢出)。目的是显示一段小文字,显示“滚动以显示更多>>”。
我知道我可以使用数学并用屏幕宽度计算项目宽度。然而......列表视图已经知道这一点,所以我想知道是否有一种方法可以访问该信息
我在 flutter InheritedWidget / InheritedModel 中的代码实现是推荐的。不过我有一个小问题。
假设我有一个继承的Widget MyInheritedWidget,它包含一些反应数据。访问该数据的最佳方式是什么?
Widget build(BuildContext context) {
MyData data= MyInheritedWidget.of(context).someData;
return ExampleWidget(
//Using the data here
data : data.someData.data,
moreData : data.moreData
sameData:data.someData.data,
);
Run Code Online (Sandbox Code Playgroud)
或者
Widget build(BuildContext context) {
return ExampleWidget(
//Using the data here
data : MyInheritedWidget.of(context).someData.data,
moreData : MyInheritedWidget.of(context).someData.moreData
sameData: MyInheritedWidget.of(context).someData.data,
);
Run Code Online (Sandbox Code Playgroud)
我知道我们调用context.dependOnInheritedWidgetOfExactType<MyInheritedWidget>();并将上下文订阅到数据,因此当它更改时会重建。我们不是通过调用 MyInheritedWidget.of(context) 进行多次订阅吗?还是性能是一样的?我认为 flutter 团队足够聪明,只订阅一次,如果我们订阅就返回数据。但是哪种方法对性能更好?
这不是关于可读性,而是关于性能。因为我可以轻松地使用 BuildContext 中的扩展来转换MyInheritedWidget.of(context).someData为context.someData.