我在main.dart中定义了Method和Widget部分,我的代码工作正常,
我创建了新文件method.dart,并使用了该文件中的所有方法,并在我的主文件中导入了方法,
但是我的问题是如何从main.dart中的另一个文件调用Widget部分。
main.dart:
如何从另一个文件调用以下小部件:
Widget buttonSection = Container(
child: Row(
mainAxisAlignment: MainAxisAlignment.spaceEvenly,
children: [
_buildButtonColumn(color, Icons.call, 'CALL'),
_buildButtonColumn(color, Icons.near_me, 'ROUTE'),
_buildButtonColumn(color, Icons.share, 'SHARE'),
],
),
);
可以从另一个文件调用以下方法:
Column _buildButtonColumn(Color color, IconData icon, String label) {
return Column(
mainAxisSize: MainAxisSize.min,
mainAxisAlignment: MainAxisAlignment.center,
children: [
Icon(icon, color: color),
Container(
margin: const EdgeInsets.only(top: 8),
child: Text(
label,
style: TextStyle(
fontSize: 12,
fontWeight: FontWeight.w400,
color: color,
),
),
),
],
);
}
在材料功能中使用它:
return MaterialApp(
title: 'Flutter layout demo',
home: Scaffold(
appBar: AppBar(
title: Text('Flutter layout demo'),
),
body: ListView(
children: [
Image.asset(
'images/lake.jpg',
width: 600,
height: 240,
fit: BoxFit.cover,
),
buttonSection,
],
),
),
);
答案 0 :(得分:1)
要从任何文件(无论是main.dart文件还是任何其他dart文件)使用buttonSection小部件,您都必须在任何类之外全局地编写buttonSection小部件。
因此您可以访问该特定窗口小部件。如果要在有状态或无状态类中创建它,则将无法访问buttonSection小部件。
因此,请创建一个dart文件,并从所有类中添加以下小部件并进行全局定义。
Widget buttonSection = Container(
child: Row(
mainAxisAlignment: MainAxisAlignment.spaceEvenly,
children: [
_buildButtonColumn(color, Icons.call, 'CALL'),
_buildButtonColumn(color, Icons.near_me, 'ROUTE'),
_buildButtonColumn(color, Icons.share, 'SHARE'),
],
),
);
然后在任何地方访问它,导入包含buttonSection小部件的dart文件,您可以像使用它一样
@override
Widget build(BuildContext context) {
return buttonSection;
}
此外,请记住,您的小部件/变量/函数名称不应以“ _” 开头,以便从另一个dart文件进行全局访问。