【发布时间】:2019-06-20 20:25:00
【问题描述】:
我正在 Flutter/Dart 中创建一个应用程序,我目前正在处理应用程序的布局。我正在尝试创建一个可以完美运行的标准表格布局,直到我想将代码外包到不同的文件中。此时,我创建了一个扩展 StatelessWidget 的类,它覆盖了返回 TableRow 的内置方法。此时,我的 IDE 声称“TableRow”不是“Widget”类型。
我尝试使用不同的方法,如网格布局和一些与行/列有关的技巧,但实际上没有一个是我正在寻找的解决方案。我只是想将代码重构为多个文件。
此代码现在位于单独的文件中。虽然 TableRow 是 Table() 中的直接子级,但它工作得非常好。
import 'package:flutter/material.dart';
class Test extends StatelessWidget {
@override
Widget build(BuildContext context) {
return TableRow(
children: [
TableCell(
child: Text("test"),
),
]
)
}
}
我从中调用方法的文件看起来像这样:
Container(
constraints: BoxConstraints(minWidth: 250, maxWidth: 300, maxHeight: 300),
child: Table(
children: [
Test(),
Test(),
Test(),
Test(),
],
),
),
我只是希望 TableRow 像其他所有东西一样被识别为普通的 Widget。例如 TableCell 被识别为 Widget。我得到的错误消息是“错误:返回类型'TableRow'不是'Widget',由方法'build'定义。(return_of_invalid_type at [projectname] lib/widgets/auth/shared/test.dart: 12)"。该错误发生在编译之前并被 Android Studio 标记。
编辑:添加代码调用
【问题讨论】:
-
这是您使用的确切代码吗?您缺少 TableCell 的“子”参数。
-
嗨,不是,抱歉。我将其编辑到原始帖子中,因此现在更有意义。感谢您指出这一点!
-
我明白了,你能解释一下你的理由吗?为什么你需要一个 tablerow 小部件,而你可以只拥有一个返回 tablerow 的简单方法?
-
我想遵循“一切都是小部件”的设计。基本上为所有包含信息的东西创建一个小部件。在我的代码中,有一个构造函数保存附加值,例如将写入的文本而不是“测试”。我只是想简化代码以便更好地理解。
-
我明白,我会说这太过分了。