如何从另一个 dart 文件调用 class
How to call class from another dart file
嗨,我很想学习 Flutter。我在这里有点困惑。我正在尝试从另一个 dart 文件调用 class。这就是我的文件结构。
例如,我的 main.dart.
中只需要这个
在 app.dart 文件中,我想调用 3 个特征,它们是 Home_screen、Parking_screen 和 Payment_screen。
在我的 homescreen.dart 中,我想调用主屏幕中的所有小部件,即 app_bar、按钮和新闻。
我不知道怎么打电话
(1)app.dart 文件,用于 3 个功能,即家庭、停车和付款
(2)homescreen.dart 主屏幕的所有小部件
如果有人能帮助我并给我一个想法,我会很高兴;(
如果您有文件 app.dart
和 homescreen.dart
,只要 app.dart
像您在图像中包含的那样包含一个导入语句,您就可以使用 public 类 和来自 homescreen.dart
的值,就好像它们已在 app.dart
.
中定义一样
Public 是不以 _
开头的所有内容
例如,如果您有:
// a.dart
final String someVariable = "some variable";
final String _someOtherVariable = "another variable";
然后:
// b.dart
import './a.dart';
void someFunction() {
print(someVariable); // Will work, since it's public from a.dart
print(_someOtherVariable); // Will fail since the variable is not public.
}
上面我使用了相对导入的方式。它以不同的方式查找要从中导入的文件,但在其他方面具有相同的效果。
对于您的功能,如果它们是 Widget 类,由于您已经添加了一个 import stement,您应该可以直接在 app.dart
[=19] 中使用 类 =]
根据我从问题中了解到的情况,您想实现以下目标:
想使用 app_bar、新闻、home_screen.dart、
中“home/widgets”文件夹中的按钮
呼叫homescreen_screen.dart,payment_screen.dart,
parking_screen.dart 在 app.dart
需要了解的一件事是您不能在 Scaffold() 下调用 Scaffold(),我的意思是:
假设这是 app.dart 文件:
/state building code here/{
return Scaffold(
appBar : AppBar(),
body : HomeScreen(),
);
}
这是 home_screen.dart 文件:
/state building code here/{
return Scaffold();
}
这会引发错误。相反,它应该是
/state building code here/{
return Column() or Row() or Container() //etc...
}
(1) 表示 app.dart returns home_screen.dart where "home/widgets" 下的所有 widgtes 都排列在列中,
将此作为您的主屏幕代码:
import '' //import all necessary files including all 3 dart files from "home/widget"
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return HomeScreen();
}
}
class HomeScreen extends StatefulWidget {
HomeScreen({
Key? key,
}) : super(key: key);
@override
_HomeScreenState createState() => _HomeScreenState();
}
class _HomeScreenState extends State<HomeScreen> {
@override
Widget build(BuildContext context) {
return Column(
children: [
Container(height: 150, width:200, color : Colors.grey, child: AppBar_H()), //from "features/home/widget/app_barH.dart"
Container(height: 150, width:200, color : Colors.grey, child: News()), //from "features/home/widget/news.dart"
Container(height: 150, width:200, color : Colors.grey, child: Button()), //from "features/home/widget/button.dart"
]
);
}
}
这将创建一个屏幕,其中包含从 app_barH.dart、news.dart 和 button.dart
返回的 3 列
由于您已经导入了文件,
只需将容器的子项从 news.dart 或 app_barH.dart 或 button.dart
添加为 class
注意 Column() 如何有一个子 属性 而不是子,这是因为 Column 可以垂直方式包含多个小部件,而具有子 属性 的 Container() 只能接受一个小部件。 children 是列表 [].
类型
(2) 这可以通过类似于 ans (1)
的方式实现
嗨,我很想学习 Flutter。我在这里有点困惑。我正在尝试从另一个 dart 文件调用 class。这就是我的文件结构。
在 app.dart 文件中,我想调用 3 个特征,它们是 Home_screen、Parking_screen 和 Payment_screen。
在我的 homescreen.dart 中,我想调用主屏幕中的所有小部件,即 app_bar、按钮和新闻。
我不知道怎么打电话 (1)app.dart 文件,用于 3 个功能,即家庭、停车和付款 (2)homescreen.dart 主屏幕的所有小部件
如果有人能帮助我并给我一个想法,我会很高兴;(
如果您有文件 app.dart
和 homescreen.dart
,只要 app.dart
像您在图像中包含的那样包含一个导入语句,您就可以使用 public 类 和来自 homescreen.dart
的值,就好像它们已在 app.dart
.
中定义一样
Public 是不以 _
例如,如果您有:
// a.dart
final String someVariable = "some variable";
final String _someOtherVariable = "another variable";
然后:
// b.dart
import './a.dart';
void someFunction() {
print(someVariable); // Will work, since it's public from a.dart
print(_someOtherVariable); // Will fail since the variable is not public.
}
上面我使用了相对导入的方式。它以不同的方式查找要从中导入的文件,但在其他方面具有相同的效果。
对于您的功能,如果它们是 Widget 类,由于您已经添加了一个 import stement,您应该可以直接在 app.dart
[=19] 中使用 类 =]
根据我从问题中了解到的情况,您想实现以下目标:
想使用 app_bar、新闻、home_screen.dart、
中“home/widgets”文件夹中的按钮呼叫homescreen_screen.dart,payment_screen.dart, parking_screen.dart 在 app.dart
需要了解的一件事是您不能在 Scaffold() 下调用 Scaffold(),我的意思是:
假设这是 app.dart 文件:
/state building code here/{
return Scaffold(
appBar : AppBar(),
body : HomeScreen(),
);
}
这是 home_screen.dart 文件:
/state building code here/{
return Scaffold();
}
这会引发错误。相反,它应该是
/state building code here/{
return Column() or Row() or Container() //etc...
}
(1) 表示 app.dart returns home_screen.dart where "home/widgets" 下的所有 widgtes 都排列在列中,
将此作为您的主屏幕代码:
import '' //import all necessary files including all 3 dart files from "home/widget"
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return HomeScreen();
}
}
class HomeScreen extends StatefulWidget {
HomeScreen({
Key? key,
}) : super(key: key);
@override
_HomeScreenState createState() => _HomeScreenState();
}
class _HomeScreenState extends State<HomeScreen> {
@override
Widget build(BuildContext context) {
return Column(
children: [
Container(height: 150, width:200, color : Colors.grey, child: AppBar_H()), //from "features/home/widget/app_barH.dart"
Container(height: 150, width:200, color : Colors.grey, child: News()), //from "features/home/widget/news.dart"
Container(height: 150, width:200, color : Colors.grey, child: Button()), //from "features/home/widget/button.dart"
]
);
}
}
这将创建一个屏幕,其中包含从 app_barH.dart、news.dart 和 button.dart
返回的 3 列由于您已经导入了文件, 只需将容器的子项从 news.dart 或 app_barH.dart 或 button.dart
添加为 class注意 Column() 如何有一个子 属性 而不是子,这是因为 Column 可以垂直方式包含多个小部件,而具有子 属性 的 Container() 只能接受一个小部件。 children 是列表 [].
类型(2) 这可以通过类似于 ans (1)
的方式实现