首页 > 解决方案 > Flutter:如何检查 Widget 是否为滚动小部件

问题描述

ListView,GridView等小部件SingleChildScrollView是可滚动的小部件,而Container, SizedBox,Column则不是。

有没有办法检查是否Widget可滚动,使用类似的东西

Widget widget = SomeWidget();
bool scrollable = widget.isScrollable(): // any property like this?

标签: flutterdart

解决方案


当你写这样的东西时:

Widget widget = SomeWidget();

那么您基本上是将您的小部件向下转换为Widget,这是所有类的父类。如果您检查文档中的 Widget 类,您应该只看到 3 个公开的方法。哪个是:

  1. createElement
  2. debugFillProperties
  3. toStringShort

bool scrollable = widget.isScrollable(): // 任何这样的属性?

所以不,这是不可能的。

但是,您知道小部件必须是ScrollView的子类或者是SingleChildScrollView类型,因此您可以自己编写实用方法。喜欢

bool isScrollable(Widget widget) => widget is ScrollView || widget is SingleChildScrollView;

推荐阅读