Flutter误差:正文可能正常完成,导致返回“null”,但返回类型"Widget“可能是不可为null的类型

58wvjzkj  于 2022-12-05  发布在  Flutter
关注(0)|答案(2)|浏览(156)
import 'package:flutter/material.dart';

class LayOutBuilder extends StatelessWidget {
  const LayOutBuilder({super.key});

  @override
  Widget build(BuildContext context) {
    
    return Scaffold(
      body: LayoutBuilder(
      builder: (context, p1) {
        if (p1.maxHeight < 400) {
          return Container();
        }
      },
    ),
    );
  }
}

我不知道为什么它不运行。

zdwk9cvp

zdwk9cvp1#

你只在p1.maxHeight < 400的情况下返回Container,但是你没有指定p1.maxHeight < 400不为真时返回什么,因此它将返回null,这是不允许的,因为它必须返回一些东西

if (p1.maxHeight < 400) {
  return Container();
} else {
  return Text('some widget');
}
tgabmvqs

tgabmvqs2#

builder参数需要是一个返回小部件的函数。您的实现只在某些if条件下返回小部件。在else-case中,它不返回任何东西。这是不允许的,并引发编译错误。
在所有情况下都应该返回一个小部件。具体是哪个小部件取决于你的用例。但是类似下面这样的小部件将被编译:

return Scaffold(
  body: LayoutBuilder(
  builder: (context, p1) {
    if (p1.maxHeight < 400) {
      return Container();
    } else {
      return SizedBox(height: 0) // Or any other widget
    }
  }),
);

相关问题