如何将示例项目添加到 Flutter 包中?

How do I add an Example Project to a Flutter Package?

有没有办法为包中的示例地图结构自动生成模板代码?

大多数软件包的根目录下都有一个 /example 文件夹,用于展示软件包的功能。 我不确定创建示例的 "best" 方法是什么,或者它是否重要。

我是否单独创建所有文件? 我是否创建一个新项目然后将其复制到包根目录? 我可以直接在项目中自动生成示例项目吗?

这是我第一次尝试创建包,我想一次就做对。

在项目的根目录中创建一个名为 example 的新项目,然后删除不必要的文件,例如 CHANGELOGLICENSEREADME,因为它们将位于您的包文件夹中.

这是一个我创建的包的示例(没有双关语意):

现在在 pubspec.yaml 中,您应该像这样将包作为开发依赖项包括在内:

dev_dependencies:
  your_package:
    path: ../

我相信您也可以使用常规依赖项,但这对我有用。

现在您可以在 /lib 中添加一个 main.dart 文件,导入您的包,然后创建一个示例项目。

使用项目根目录下内置的flutter命令行工具完成所有工作:

/e/projects/myproject # flutter create example

它有这个输出:

Creating project example... androidx: true
  example\.gitignore (created)
  example\.idea\libraries\Dart_SDK.xml (created)
  example\.idea\libraries\Flutter_for_Android.xml (created)
  example\.idea\libraries\KotlinJavaRuntime.xml (created)
  example\.idea\modules.xml (created)
  example\.idea\runConfigurations\main_dart.xml (created)
  example\.idea\workspace.xml (created)
  example\.metadata (created)
  example\android\app\build.gradle (created)
  example\android\app\src\main\kotlin\com\example\example\MainActivity.kt (created)
  example\android\build.gradle (created)
  example\android\example_android.iml (created)
  example\android\.gitignore (created)
  example\android\app\src\debug\AndroidManifest.xml (created)
  example\android\app\src\main\AndroidManifest.xml (created)
  example\android\app\src\main\res\drawable\launch_background.xml (created)
  example\android\app\src\main\res\mipmap-hdpi\ic_launcher.png (created)
  example\android\app\src\main\res\mipmap-mdpi\ic_launcher.png (created)
  example\android\app\src\main\res\mipmap-xhdpi\ic_launcher.png (created)
  example\android\app\src\main\res\mipmap-xxhdpi\ic_launcher.png (created)
  example\android\app\src\main\res\mipmap-xxxhdpi\ic_launcher.png (created)
  example\android\app\src\main\res\values\styles.xml (created)
  example\android\app\src\profile\AndroidManifest.xml (created)
  example\android\gradle\wrapper\gradle-wrapper.properties (created)
  example\android\gradle.properties (created)
  example\android\settings.gradle (created)
  example\ios\Runner\AppDelegate.swift (created)
  example\ios\Runner\Runner-Bridging-Header.h (created)
  example\ios\Runner.xcodeproj\project.pbxproj (created)
  example\ios\Runner.xcodeproj\xcshareddata\xcschemes\Runner.xcscheme (created)
  example\ios\.gitignore (created)
  example\ios\Flutter\AppFrameworkInfo.plist (created)
  example\ios\Flutter\Debug.xcconfig (created)
  example\ios\Flutter\Release.xcconfig (created)
  example\ios\Runner\Assets.xcassets\AppIcon.appiconset\Contents.json (created)
  example\ios\Runner\Assets.xcassets\AppIcon.appiconset\Icon-App-1024x1024@1x.png (created)
  example\ios\Runner\Assets.xcassets\AppIcon.appiconset\Icon-App-20x20@1x.png (created)
  example\ios\Runner\Assets.xcassets\AppIcon.appiconset\Icon-App-20x20@2x.png (created)
  example\ios\Runner\Assets.xcassets\AppIcon.appiconset\Icon-App-20x20@3x.png (created)
  example\ios\Runner\Assets.xcassets\AppIcon.appiconset\Icon-App-29x29@1x.png (created)
  example\ios\Runner\Assets.xcassets\AppIcon.appiconset\Icon-App-29x29@2x.png (created)
  example\ios\Runner\Assets.xcassets\AppIcon.appiconset\Icon-App-29x29@3x.png (created)
  example\ios\Runner\Assets.xcassets\AppIcon.appiconset\Icon-App-40x40@1x.png (created)
  example\ios\Runner\Assets.xcassets\AppIcon.appiconset\Icon-App-40x40@2x.png (created)
  example\ios\Runner\Assets.xcassets\AppIcon.appiconset\Icon-App-40x40@3x.png (created)
  example\ios\Runner\Assets.xcassets\AppIcon.appiconset\Icon-App-60x60@2x.png (created)
  example\ios\Runner\Assets.xcassets\AppIcon.appiconset\Icon-App-60x60@3x.png (created)
  example\ios\Runner\Assets.xcassets\AppIcon.appiconset\Icon-App-76x76@1x.png (created)
  example\ios\Runner\Assets.xcassets\AppIcon.appiconset\Icon-App-76x76@2x.png (created)
  example\ios\Runner\Assets.xcassets\AppIcon.appiconset\Icon-App-83.5x83.5@2x.png (created)
  example\ios\Runner\Assets.xcassets\LaunchImage.imageset\Contents.json (created)
  example\ios\Runner\Assets.xcassets\LaunchImage.imageset\LaunchImage.png (created)
  example\ios\Runner\Assets.xcassets\LaunchImage.imageset\LaunchImage@2x.png (created)
  example\ios\Runner\Assets.xcassets\LaunchImage.imageset\LaunchImage@3x.png (created)
  example\ios\Runner\Assets.xcassets\LaunchImage.imageset\README.md (created)
  example\ios\Runner\Base.lproj\LaunchScreen.storyboard (created)
  example\ios\Runner\Base.lproj\Main.storyboard (created)
  example\ios\Runner\Info.plist (created)
  example\ios\Runner.xcodeproj\project.xcworkspace\contents.xcworkspacedata (created)
  example\ios\Runner.xcworkspace\contents.xcworkspacedata (created)
  example\lib\main.dart (created)
  example\example.iml (created)
  example\pubspec.yaml (created)
  example\README.md (created)
  example\test\widget_test.dart (created)
Running "flutter pub get" in example...                             3.0s
Wrote 68 files.

All done!
[√] Flutter: is fully installed. (Channel stable, v1.12.13+hotfix.5, on Microsoft Windows [Version 6.1.7601], locale en-US)
[√] Android toolchain - develop for Android devices: is fully installed. (Android SDK version 29.0.2)
[√] Android Studio: is fully installed. (version 3.5)
[√] Connected device: is fully installed. (2 available)

In order to run your application, type:

  $ cd example
  $ flutter run

Your application code is in example\lib\main.dart.

如果使用 Android Studio 3.5.2,运行 保证的默认示例:

  1. 通过从工具栏的 Flutter 下拉菜单中选择 Edit Configurations... 为示例 main.dart 添加新配置。

  2. Select Run/Debug 配置 对话框左侧的 Flutter 目录,然后按 +按钮。

  3. Select 颤动

  4. 通过单击 Dart 入口点: 对话框中的文件夹,在新的 example/lib 目录中浏览 main.dart。

  5. 单击工具栏上的三角形 运行 按钮。

我刚刚为我自己的项目执行了这些步骤并且效果很好。

然后,要针对您的项目进行自定义,请编辑示例的 pubspec.yaml 文件并向您的项目添加依赖项:

dependencies:
  my_project:
    path: ../

在 Android Studio

中使用示例创建 Flutter 包
  1. 创建一个新的 Flutter 项目
  2. Select Flutter 包
  3. 在 Android Studio 中打开新项目后,select“终端”选项卡,然后 运行:

flutter create example

  1. Select“编辑配置”->添加配置->Select位于example/lib文件夹中的main.dart文件

  2. 通过添加以下内容将您的示例 pubspec.yaml 和 link 打开到库中:

    your_package_name: 小路: ..\

注意:当您打开 Example 文件夹时,它看起来就像嵌套在您的项目中的整个 Flutter 应用程序;那是因为它是。只需打开 io 和 android 文件夹即可看到它们共享该模式:

转到您的项目根文件夹并运行 flutter create example
就是这样。