【问题标题】:How to call multiple widgets in dart files on another dart file in flutter?如何在颤动的另一个飞镖文件上调用飞镖文件中的多个小部件?
【发布时间】:2021-11-20 16:47:01
【问题描述】:

我从 Adob​​eXD 创建了一些 dart 文件(applebutton.dartbackground.dartgooglebutton.dart)。但是,我不知道如何从 ma​​in.dart 文件中调用这些文件。

我可以将这些 AbodeXD 生成的文件的一部分复制并粘贴到 main.dart 文件中,但我相信必须有一种方法可以在不使 main.dart 变大的情况下调用这些文件。

在 class MyApp> Widget> body> children 中,我从 background.dart 中粘贴了 Container,但我想调用 Widget 而不是复制它。

(我是 Flutter 的新手,所以感谢您的回答)。

【问题讨论】:

    标签: flutter android-studio dart flutter-dependencies


    【解决方案1】:

    当使用来自不同文件的项目时,您必须首先使用 import 关键字导入它们,如下所示:

    import 'Widgets/my_widget.dart';

    另一种导入方式是调用小部件的完整路径:

    import 'package:my_project/widgets/my_widget.dart';

    大多数 IDE 都会为您提供自动导入您使用的任何文件的选项

    【讨论】:

    • 并且一旦导入,我该如何使用它(例如,我发布的第一张图片中的类和小部件),对不起?谢谢。
    • 所以你必须先对文件做一些事情才能使用它们(我也猜测有一种方法可以让 adobeXD 自动执行此操作,但我不知道如何)首先删除这些行:void main() {...} 然后将小部件重命名为您想要的任何内容,其中显示 class MyApp 最后您的小部件被 MaterialApp 和 Scaffold 包围,MaterialApp 意味着小部件是一个应用程序,所以如果它是一个按钮,你应该删除它,而 Scaffold 表示该小部件是应用程序中的一个页面,因此如果您制作了整个页面,则不应将其删除,但如果是例如按钮,则也将其删除。
    • 正如我所说,adobeXD 可能有一种方法可以自动执行此操作,但我不使用它,所以我不知道。
    • 谢谢!!我 1) 删除了每个文件的主要部分,2) 更改每个类的名称,3) 在 main.dart 文件中使用 runApp 来调用每个类。有效!谢谢!!
    【解决方案2】:

    一个简单的解决方案是创建另一个小部件,仅用于导出和导入一个文件。

    在这张图片中,我只需要导入widgets.dart。文件的其余部分将在那里导入。

    widgets.dart

    export 'widget.circleNeonBorder.dart';
    export 'widget.rectNeonBorder.dart';
    export 'widget.desktopWrapper.dart';
    export 'widget.tabletWrapper.dart';
    export 'widget.mobileWrapper.dart';
    

    Vs-code 用户有Dart Barrel File Generator 扩展名。你也可以找到 android-studio。

    【讨论】:

      【解决方案3】:

      这些页面都有主要功能。 Dart 无法理解。 Dart 文件搜索 main 函数开始,这就是为什么你必须在你的 main.dart 文件中只使用一个 main 函数。

      要在 main.dart 文件中使用其他屏幕,请在 main.dart 文件顶部使用 import 关键字并写入页面路径。

      屏幕必须使用 StatelessWidget 或 StatefulWidget 扩展。当您想显示另一个页面时,您并没有编译整个应用程序,因此您不需要在每个页面中使用 main() 函数。

      【讨论】:

        猜你喜欢
        • 2020-11-27
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2023-02-21
        • 2020-11-28
        • 1970-01-01
        • 2020-10-19
        • 2019-10-21
        相关资源
        最近更新 更多