参数类型 'Widget' 无法在 null 安全中分配给参数类型 'PreferredSizeWidget?'

The argument type 'Widget' can't be assigned to the parameter type 'PreferredSizeWidget?' in null safety

Scaffold(
  appBar: _buildAppBar(),
)

函数如下:

Widget _buildAppBar() => AppBar(); // Error

在我将我的代码迁移到 null safety 之前,这段代码工作正常。

Dart 空安全不允许向下转换,所以你不能将 Widget 赋给 PreferredSizeWidget 就像你不能将 Object 赋给 String(这在空安全之前是可能的)。

您应该更改您的函数并从中 return AppBarPreferredSizeWidget

AppBar _buildAppBar() => AppBar();

PreferredSizeWidget _buildAppBar() => AppBar();

我无法发表评论,但 iDecode 的回答是正确的

AppBar customAppBar(String title, bool centerTitle, List<Widget> actions) {}

这里错误为空。

Scaffold(
  appBar: _buildAppBar() as PreferredSizeWidget?,
)