导致错误的原因是“返回类型'TableRow'不是方法'build'定义的'Widget'”

时间:2019-06-20 20:25:00

标签: flutter dart

我正在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标记。

编辑:添加了代码调用

1 个答案:

答案 0 :(得分:0)

错误消息告诉您出了什么问题:TableRow不是Widget

如果您查看https://jsfiddle.net/x9eouw7z/,请注意,没有“继承”部分显示该继承自Widget

如果您查看TableRow documentation,请注意childrenList<TableRow>不是List<Widget>

“一切都是小部件”是一个夸张的词,旨在使人们考虑将其UI分解为可组合的小部件。显然有些东西不是WidgetintStringFunctionElementRenderObject等)