flutter - Flutter 自定义小部件无法显示
问题描述
我是 Flutter 和 Dart 的新手,我正在尝试创建一个基于 GestureDetector 类的可点击容器类。我的容器代码如下所示:
class CustomWidget extends GestureDetector
{
final aTitle;
CustomWidget(this.aTitle)
{
onTap() {
print("$aTitle was pressed!");
}
child: new Container(
padding: const EdgeInsets.all(8),
child: Text(aTitle),
color: Colors.blueGrey[200],
);
}
}
我正在尝试在我的应用程序小部件正文中使用以下代码在我的主应用程序屏幕中显示此小部件:
body: CustomScrollView(
primary: false,
slivers: <Widget>[
SliverPadding(
padding: const EdgeInsets.all(20),
sliver: SliverGrid.count(
crossAxisSpacing: 10,
mainAxisSpacing: 10,
crossAxisCount: 2,
children: <Widget>[
CustomWidget('Test Display'),
],
),
),
],
),
我似乎有两个问题:(1)我的开发环境告诉我我的 onTap() 方法是“未使用的”,表明它不会捕获点击事件,以及(2)这似乎并不重要,因为我在应用小部件中创建的 CustomWidget 实例没有出现在我的屏幕上。
我显然错过了一些东西。有人可以帮我更正我的代码,以便显示我的自定义小部件并处理 onTap 事件吗?
解决方案
一般来说,CustomWidget 是个好主意,但继承是错误的实现。Flutter 强烈支持组合而不是继承。
您使用组合的自定义小部件:
class CustomWidget extends StatelessWidget {
final String title;
const CustomWidget(this.title);
@override
Widget build(BuildContext context) {
return GestureDetector(
onTap: () {
print("$title was pressed!");
},
child: new Container(
padding: const EdgeInsets.all(8),
child: Text(title),
color: Colors.blueGrey[200],
));
}
}
推荐阅读
- rest - REST 端点,获取具有唯一 ID 的嵌套资源
- windows - 如何通过命令行重定向 iisstart.htm?
- google-analytics - 如何删除谷歌分析跟踪中的多个子域,如 beta.abc.combeta.abc.com/profile
- node.js - Apache:如何同时服务 PHP 和 NodeJS
- apache-kafka - How to create several partitions by Alpakka
- sabre - 使用 Sabre SOAP API 从单个 EPR(用户 ID)令牌访问多个 Sabre PCC 的 PNRS
- excel - 使用 find 函数找不到任何东西 - 为什么它不继续执行代码?
- python - 在python中使用条件迭代子列表中的下一项
- php - PHTML 文件无法在 XAMPP 服务器 localhost 上执行 PHP 代码
- pandas - How to sort data using the groupby function in python?