You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Flutter全局复用自定义AppBar报错:类型无法匹配PreferredSizeWidget

Flutter自定义AppBar复用错误解决:The argument type 'AppBarNav' can't be assigned to 'PreferredSizeWidget?'

错误原因

Scaffold的appBar参数要求传入的组件必须实现PreferredSizeWidget接口,你定义的AppBarNav继承的是StatelessWidget,没有实现该接口,导致类型不匹配报错。

解决方法

有两种常用方案,可根据自定义需求选择:

方案一:直接继承AppBar

AppBar本身已经实现了PreferredSizeWidget,直接继承它就能满足Scaffold的参数要求,修改后的appbar.dart代码如下:

import 'package:flutter/material.dart';

class AppBarNav extends AppBar {
  final String title;
  AppBarNav({super.key, required this.title}) : super(
    title: Text(title),
  );
}

方案二:实现PreferredSizeWidget接口

如果需要更灵活的自定义布局(比如组合多个Widget),可以让AppBarNav实现PreferredSizeWidget,重写preferredSize属性指定高度:

import 'package:flutter/material.dart';

class AppBarNav extends StatelessWidget implements PreferredSizeWidget {
  final String title;
  const AppBarNav({super.key, required this.title});

  @override
  Widget build(BuildContext context) {
    return AppBar(
      title: Text(title),
    );
  }

  // 使用Flutter内置默认工具栏高度,也可自定义数值如60.0
  @override
  Size get preferredSize => const Size.fromHeight(kToolbarHeight);
}

修改完成后,Welcome页面中使用AppBarNav就不会再报错,可实现全局复用自定义AppBar的需求。

内容的提问来源于stack exchange,提问作者Łukasz Szumowski

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.10 19:01:01