ListView
、GridView
、SingleChildScrollView
等小部件是可滚动的小部件,而Container
、SizedBox
、Column
则不是。
有没有办法检查Widget
是否可滚动,例如使用
Widget widget = SomeWidget();
bool scrollable = widget.isScrollable(): // any property like this?
When you write something like this:
Widget widget = SomeWidget();
那么你基本上是将你的小部件Downcasting转换为所有类的父类Widget
类。如果你查看文档中的 Widget 类,你应该只会看到三个公开的方法。它们是:
createElement
debugFillProperties
toStringShort
bool scrollable = widget.isScrollable(): // 是否有任何类似这样的属性?
所以不,这是不可能的。
然而,你知道小部件必须是ScrollView的子类或者是类型为SingleChildScrollView,这样你就可以为自己编写一个实用程序方法。比如
bool isScrollable(Widget widget) => widget is ScrollView || widget is SingleChildScrollView;
ListView
、GridView
扩展了ScrollView
,而SingleChildScrollView
本身是一个StatelessWidget
。这些都是一些常见的小部件。但如果我正在创建的库传递了另一个小部件,比如说AbcWidget
,它也像SingleChildScrollView
一样扩展了StatelessWidget
,那么我该怎么找出来呢? - user6274128ScrollView
进行扩展而不是从头开始构建它。 - Shababb KarimScrollController
的成员? - Vineetdart:mirror
。详见此处。虽然您可以进行代码生成,但我不知道它会有什么帮助。 - Shababb Karim