Flutter无状态组件报错:命名参数‘title’未定义如何解决?
问题原因
你自定义的MyApp类继承了StatelessWidget,但你没有给这个类定义title、home等参数——这些参数属于Flutter官方的MaterialApp(或CupertinoApp)组件,而非你自己的MyApp。你错误地把MaterialApp的参数传给了自定义的MyApp,才导致“参数未定义”的报错。
修复方案
- 修正自定义
MyApp的结构,让它内部返回MaterialApp,并把参数正确传递给MaterialApp:
class MyApp extends StatelessWidget { // 给自定义MyApp声明需要接收的参数(按需添加) final String title; final Widget home; final Map<String, WidgetBuilder>? routes; const MyApp({ super.key, required this.title, required this.home, this.routes, }); @override Widget build(BuildContext context) { // 将参数传给官方的MaterialApp组件 return MaterialApp( title: title, home: home, debugShowCheckedModeBanner: false, routes: routes, ); } }
- 在
main函数中使用自定义MyApp时,传入对应参数:
void main() { runApp(MyApp( title: 'page', home: const HomePage(), // 替换成你的实际首页组件 routes: { '/second': (context) => const SecondPage(), // 按需添加路由 }, )); }
额外注意事项
- 修正代码拼写错误:你原代码里的
Statelesswidget应为StatelessWidget,buil应为build,这类拼写错误也会导致编译失败。 - 若不需要封装自定义
MyApp,也可以直接在build方法里返回MaterialApp,跳过自定义类的步骤:
class MyApp extends StatelessWidget { @override Widget build(BuildContext context) { return MaterialApp( title: 'page', home: const HomePage(), debugShowCheckedModeBanner: false, routes: { '/second': (context) => const SecondPage(), }, ); } }
内容的提问来源于stack exchange,提问作者أبو الجهود
相关产品推荐
相关产品推荐

