gpt4 book ai didi

flutter - 如何从 Flutter 中的另一个文件调用小部件部分

转载 作者:行者123 更新时间:2023-12-03 22:01:53 24 4
gpt4 key购买 nike

我在 main.dart 中定义了 Method 和 Widget 部分,我的代码运行良好,

我创建了新文件 method.dart 并使用了该文件中的所有方法,并在我的主文件中使用了导入的方法,并且它起作用了,

但我的问题是如何从 main.dart 中的另一个文件调用 Widget 部分。

main.dart:

how to call following widget from another file:


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'),
],
),
);

following method can be called from another file:


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,
),
),
),
],
);
}

Using it in material function:


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,

],
),
),
);

最佳答案

要使用任何文件中的 buttonSection 小部件,无论它是 main.dart 文件还是任何其他 dart 文件,您都必须从任何类中全局编写 buttonSection 小部件。

因此,您可以访问该特定小部件。如果您在 Stateful 或 Stateless 类中创建它,那么您将无法访问 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 文件全局访问它。

关于flutter - 如何从 Flutter 中的另一个文件调用小部件部分,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59265067/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com