android - 未定义命名参数“home” - Flutter
问题描述
我在 Flutter 项目中遇到问题。当我尝试在脚手架中调用 'home'-statement 时,它会抛出一个错误,指出The named parameter 'home' isn't defined
. 我已经尝试了很多,但我没有找到任何解决这个问题的方法。
另外,我最近开始研究 Flutter,这是我的第一个项目。所以请指导我正确的方法,因为我正处于 Flutter 体验的学习阶段。提前致谢。
文件结构:
lib/
---components/
------appScaffold.dart
---pages/
------home.dart
main.dart
我已经实现了如下代码: -
主要.dart
import 'package:flutter/material.dart';
import 'package:project/pages/home.dart';
import 'package:project/components/appScaffold.dart';
void main() => runApp(App());
class App extends StatelessWidget {
@override
Widget build(BuildContext context) {
return AppScaffold(
home: HomePage(), //!Here's the problemt with 'home'
);
}
}
主页.dart
import 'package:project/main.dart';
import 'package:flutter/material.dart';
import 'package:bubble_bottom_bar/bubble_bottom_bar.dart';
class HomePage extends StatefulWidget {
@override
_HomePageState createState() => _HomePageState();
}
class _HomePageState extends State<HomePage> {
int currentPageIndex = 0;
void changePage(int newPageIndex) {
setState(() {
currentPageIndex = newPageIndex;
});
}
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text('Title'),
),
floatingActionButton: FloatingActionButton(
onPressed: () {},
child: Icon(Icons.add),
backgroundColor: Colors.red,
),
floatingActionButtonLocation: FloatingActionButtonLocation.endDocked,
bottomNavigationBar: BubbleBottomBar(
opacity: .2,
currentIndex: currentPageIndex,
onTap: changePage,
borderRadius: BorderRadius.vertical(top: Radius.circular(16)),
elevation: 8,
fabLocation: BubbleBottomBarFabLocation.end, //new
hasNotch: true, //new
hasInk: true, //new, gives a cute ink effect
inkColor: Colors.black12, //optional, uses theme color if not specified
items: <BubbleBottomBarItem>[
BubbleBottomBarItem(
//Home
backgroundColor: Colors.red,
icon: Icon(
Icons.home,
color: Colors.black,
),
activeIcon: Icon(
Icons.home,
color: Colors.red,
),
title: Text("text")),
BubbleBottomBarItem(
backgroundColor: Colors.deepPurple,
icon: Icon(
Icons.menu,
color: Colors.black,
),
activeIcon: Icon(
Icons.menu,
color: Colors.deepPurple,
),
title: Text("text")),
BubbleBottomBarItem(
//Icon3
backgroundColor: Colors.indigo,
icon: Icon(
Icons.menu,
color: Colors.black,
),
activeIcon: Icon(
Icons.menu,
color: Colors.indigo,
),
title: Text("text")),
BubbleBottomBarItem(
//Icon 4
backgroundColor: Colors.green,
icon: Icon(
Icons.menu,
color: Colors.black,
),
activeIcon: Icon(
Icons.menu,
color: Colors.green,
),
title: Text("text"))
],
),
);
}
}
appScaffold.dart
import 'package:flutter/material.dart';
import 'package:project/main.dart';
import 'package:project/pages/home.dart';
class AppScaffold extends StatelessWidget {
AppScaffold(this.home);
final Widget home;
@override
Widget build(BuildContext context) {
return MaterialApp(
title: 'MoneyTracker',
theme: ThemeData(
primarySwatch: Colors.indigo,
primaryColor: Colors.indigo,
secondaryHeaderColor: Colors.indigo,
visualDensity: VisualDensity.adaptivePlatformDensity,
),
home: home,
);
}
}
解决方案
问题是你AppScaffold
类中的构造函数。当你想命名一个参数时,你必须把它放在花括号中。这看起来像:
import 'package:flutter/material.dart';
import 'package:project/main.dart';
import 'package:project/pages/home.dart';
class AppScaffold extends StatelessWidget {
AppScaffold({this.home});
final Widget home;
@override
Widget build(BuildContext context) {
return MaterialApp(
title: 'MoneyTracker',
theme: ThemeData(
primarySwatch: Colors.indigo,
primaryColor: Colors.indigo,
secondaryHeaderColor: Colors.indigo,
visualDensity: VisualDensity.adaptivePlatformDensity,
),
home: home,
);
}
}
当您想创建一个同时具有命名参数和位置参数的构造函数时。它看起来像:
MyClass(this.positional, {this.named, this.alsoNamed});
在这里,您可以阅读有关 dart 中命名参数的更多信息。
推荐阅读
- java - Java8使用方法参考按2个字段排序
- visual-studio-code - 循环浏览 VSCode 活动栏图标
- html - 在 Firefox 中显示表格布局损坏
- php - 如何修复 JSON_ERROR_UTF8
- batch-file - Windows Batch - 变量作为字符串偏移量?从多个文件中提取数据
- hibernate - 需要帮助:Hibernate 标准在 4.3 中有效,在 5.3.7 中无效
- recursion - 递归在合金分析仪中是如何工作的?
- sql - 查找最高级别父母的孩子
- android - 无法获取“https://dl.google.com/dl/android/maven2/com/android/tools/build/gradle/3.1.4/gradle-3.1.4.pom”
- javascript - js html选择下拉值取决于输入值