我想我有一个简单的问题,但我不知道为什么它不起作用
简单: main.dart
void main() {
runApp(const MyApp());
}
class MyApp extends StatelessWidget {
const MyApp({super.key});
// This widget is the root of your application.
@override
Widget build(BuildContext context) {
return MaterialApp(
home: const Welcome(),
);
}
}
第二个文件: 欢迎.dart
class Welcome extends StatelessWidget {
const Welcome({super.key});
@override
Widget build(BuildContext context) {
return const Scaffold(
appBar: AppBarNav(
title: 'JobFinder',
),
);
}
}
应用栏文件: appbar.dart
import 'package:flutter/material.dart';
class AppBarNav extends StatelessWidget {
final String title;
const AppBarNav({super.key, required this.title});
@override
Widget build(BuildContext context) {
return AppBar(
title: Text(title),
);
}
}
调试器说: 参数类型“AppBarNav”无法分配给参数类型“PreferredSizeWidget?”
为什么?
你知道为什么调试器告诉我不能在Welcome.dart文件中使用AppBar吗? 我知道这可能很简单,但我找不到解决方案。
一般我想在每个屏幕上放置一个appBar(相同的Appbar)
参数
appBar
需要直接是 AppBar
。您给它一个 AppBarNav
,但它不是 AppBar
,即使它只包含一个。
从技术上讲,它不需要是
AppBar
,而是 PreferredSizeWidget
实现的 AppBar
。因此,您也可以让您的AppBarNav
像这样实现PreferredSizeWidget
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),
);
}
@override
// TODO: implement preferredSize
Size get preferredSize => throw UnimplementedError();
}
但是你还需要提供
preferredSize
的实现