我正在Flutter / Dart中创建一个应用程序,目前正在处理该应用程序的布局。我正在尝试创建一个标准的表布局,它可以完美工作,直到我想将代码外包到不同的文件中为止。此时,我创建了一个扩展StatelessWidget的类,该类重写了返回TableRow的内置方法。此时,我的IDE声称'TableRow'不是'Widget'类型。
我尝试使用诸如Grid Layout之类的不同方法以及关于Rows / Columns的一些技巧,但实际上并不是一个单一的解决方案。我只是想将代码重构为多个文件。
此代码现在位于单独的文件中。尽管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'不是'小部件',如方法'build'所定义。(return_of_invalid_type在[projectname] lib / widgets / auth / shared / test.dart: 12)”。该错误在编译之前发生,并被Android Studio标记。
编辑:添加了代码调用
答案 0 :(得分:0)
错误消息告诉您出了什么问题:TableRow
不是Widget
。
如果您查看https://jsfiddle.net/x9eouw7z/,请注意,没有“继承”部分显示该继承自Widget
。
如果您查看TableRow
documentation,请注意children
是List<TableRow>
,不是是List<Widget>
。
“一切都是小部件”是一个夸张的词,旨在使人们考虑将其UI分解为可组合的小部件。显然有些东西不是Widget
(int
,String
,Function
,Element
,RenderObject
等)