Как запустить пример из пакета / библиотеки Flutter?

У меня следующая простая структура каталогов:

flutter_published
    .idea
    android
    build
    ios
    lib
        main.dart 
    flutter_published.iml
    pubspec.lock
    pubspec.yaml
    network_to_file_image
        .idea
        example
            main.dart 
        lib
            network_to_file_image.dart
        test
        network_to_file_image.iml
        pubspec.lock
        pubspec.yaml

network_to_file_image - это пакет.

Есть два main.dart files, один на flutter_published/lib/main.dart, а другой на flutter_published/network_to_file_image/example/main.dart

Я могу запустить первый, но не тот, который находится в каталоге example в network_to_file_image. Второй дает мне эту ошибку:

   Launching example\lib\main.dart on Android SDK built for x86 in debug mode...
   No application found for TargetPlatform.android_x86.
   Is your project missing an android\AndroidManifest.xml?
   Consider running "flutter create ." to create one.

Кроме того, что происходит с каталогами example и test пакетов, которые я использую, когда создается приложение? Включены ли они в окончательное развернутое приложение или удалены из него?


person MarcG    schedule 14.12.2018    source источник


Ответы (3)


Чтобы решить эту проблему, вместо файла main.dart внутри каталога example вам необходимо создать полный проект типа приложения Flutter внутри каталога example. Затем вкладка примера будет указывать на README.md файл внутри этого каталога.

Этот каталог example будет иметь свой собственный каталог lib, содержащий файл main.dart. Поскольку этот файл теперь находится внутри каталога типа приложения, его можно запустить.

Посетите это репо, чтобы узнать, как это работает:

https://github.com/marcglasberg/async_redux/tree/master/example


Обновление:

Чтобы было ясно, файл pubspec.yaml примера может ссылаться на свой пакет, используя относительную ссылку. Например, вот раздел dependencies каталога example пакета async_redux, о котором я упоминал:

dependencies:
  http: ^0.13.1
  async_redux:
    path: ../
  flutter:
    sdk: flutter

Поскольку каталог example находится на том же уровне, что и файл pubspec.yaml пакета, то собственный pubspec.yaml примера находится на один уровень ниже него. Таким образом, он может ссылаться на сам пакет, используя путь ../:

  async_redux:
    path: ../
person MarcG    schedule 24.11.2019
comment
Как мне создать полный проект типа приложения Flutter внутри каталога с примерами, используя уже предоставленный main()? Я забегаю туда flutter create, или ...? - person Karolina Hagegård; 01.05.2021
comment
@ KarolinaHagegård Просто создайте проект приложения Flutter и поместите туда свой main.dart файл. - person MarcG; 02.05.2021
comment
Хорошо, это определенно неправда. Мне нужно поместить туда ВСЕ из папки с примерами, а не только main.dart. Я сделал это, заменив все файлы с одинаковыми именами, и да, он построен ... Я все же подозреваю, что должен быть менее окольный способ сделать это! Тот, который не требует создания большого количества файлов, которые я просто собираюсь заменить ... - person Karolina Hagegård; 02.05.2021
comment
Да, конечно, я имел в виду все из приведенного здесь примера. Обычно в качестве примера используется один файл main.dart, но если вы разбиваете его на несколько файлов, вам придется поместить их все. Но сам ваш пакет (который используется в примере) вам не нужно туда помещать. Вы просто ссылаетесь на него из своего примера pubspec.yaml. Я собираюсь обновить свой ответ. - person MarcG; 03.05.2021

example/main.dart существует только для отображения в https://pub.dartlang.org/packages/network_to_file_image#-example-tab-

Сайт pub ограничен в том, как он находит контент в каталоге примеров для отображения на вкладке Example.

person Günter Zöchbauer    schedule 14.12.2018
comment
Итак, когда вы разрабатываете пакет, вам действительно нужно создать пример в другом месте, а затем просто скопировать его туда? - person MarcG; 15.12.2018
comment
Да, скопируйте это в пример, чтобы он отобразился на веб-странице. По этому поводу были какие-то дискуссии в вопросах, но найти их не удалось. - person Günter Zöchbauer; 15.12.2018

cd в каталог и выполните flutter create .. После этого вы сможете запустить его

person Ibrahim    schedule 19.07.2021