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

时间:2019-12-10 10:26:15

标签: flutter flutter-layout

我在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,

          ],
        ),
      ),
    );

1 个答案:

答案 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文件进行全局访问。