小编Val*_*aXD的帖子

检测SingleChildScrollview/Listview是否可以滚动

所以,我有一个具有无限宽度(行)的小部件。为了用项目填充小部件,我使用水平轴的 Lisview 构建器。我还可以使用具有水平轴和 Row 作为子项的 SingleChildScrollview 。

如果有几个项目,屏幕的宽度不会被填满,那就太好了。但是,当有很多项目时,列表视图变得“可滚动”,我可以向右滚动以显示项目。

我想知道列表是否可滚动(如果溢出)。目的是显示一段小文字,显示“滚动以显示更多>>”。

我知道我可以使用数学并用屏幕宽度计算项目宽度。然而......列表视图已经知道这一点,所以我想知道是否有一种方法可以访问该信息

dart flutter

8
推荐指数
1
解决办法
4290
查看次数

如果小部件多次调用 InheritedWidget.of() 是否有任何性能问题?

我在 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).someDatacontext.someData.

dart flutter

2
推荐指数
1
解决办法
62
查看次数

标签 统计

dart ×2

flutter ×2