Stop flutter build runner from rebuilding my plugin - flutter

I have the following file structure in my flutter project
lib
- router
-- router.gr
plugins
- myplugin //is a dart package
-- input_folder
--- swagger.json
-- lib
--- swagger_generated_code
--- myplugin.dart
-- build.yml
and I use the following packages
https://pub.dev/packages/auto_route
the router.gr is related to the auto_route package
https://pub.dev/packages/swagger_dart_code_generator
and the plugin is related to the swagger_dart_code_generator packge
The plugin has this build.yml from plugins/myplugin/build.yml
targets:
$default:
sources:
- lib/**
- input_folder/**
builders:
chopper_generator:
options:
header: "//Generated code"
swagger_dart_code_generator:
options:
input_folder: "input_folder/"
output_folder: "lib/swagger_generated_code/"
But what ends up happening is that I run
flutter packages pub run build_runner build
in my project root to rebuild the router as specified by the auto_route package. Which then gives the following error
FileSystemException: Cannot create file, path = './.dart_tool' (OS Error: Access is denied.
, errno = 5)
dart:io _File.createSync
package:swagger_dart_code_generator/swagger_dart_code_generator.dart 61:30 _generateExtensions
package:swagger_dart_code_generator/swagger_dart_code_generator.dart 99:32 SwaggerDartCodeGenerator.buildExtensions
package:build_runner_core/src/package_graph/apply_builders.dart 403:33 _validateBuilder
package:build_runner_core/src/package_graph/apply_builders.dart 183:9 new BuilderApplication.forBuilder.<fn>.<fn>
package:build_runner_core/src/package_graph/apply_builders.dart 346:27 _createBuildPhasesForBuilderInCycle.<fn>.<fn>
dart:core Iterable.toList
package:build_runner_core/src/package_graph/apply_builders.dart 293:8 createBuildPhases
package:build_runner_core/src/generate/build_impl.dart 109:29 BuildImpl.create
package:build_runner_core/src/generate/build_runner.dart 34:42 BuildRunner.create
package:build_runner/src/generate/build.dart 109:35 build
package:build_runner/src/entrypoint/build.dart 35:18 BuildCommand._run
package:args/command_runner.dart 209:13 CommandRunner.runCommand
package:build_runner/src/entrypoint/run.dart 26:18 run
.dart_tool\build\entrypoint\build.dart 35:16 main
If I open the plugin folder in a separate window and run the build command in there it works just fine for the plugin.
Is there a way to ignore the plugin folder when rebuilding the router perhaps?
But mainly my question is how can I rebuild my router.gr with my current structure? I can't remove the plugins folder, it needs to stay there as it is.
These are the versions I use
build_runner: ^2.1.8
auto_route_generator: ^3.2.3
chopper_generator: ^4.0.5
json_serializable: ^6.1.4
swagger_dart_code_generator: ^2.4.6
And I am on flutter version 2.10.3

Please share the code where you're initializing AutoRoute.
Meanwhile, this is what I would suggest:
Check if you're not doing anything wrong in the initialization/usage.
Make sure you are using build_runner in dev_dependencies.
Run this command on project root for one-time code generation: flutter pub run build_runner watch

Hi you can execute the buildrunner in a specific folder:
flutter pub run build_runner build lib/ --delete-conflicting-outputs

Related

Flutter project not picking up local flutter package updates

Flutter 3.3.9
I created a flutter project and I reference it as a dependency in another flutter project like so:
dev_dependencies:
flutter_test:
sdk: flutter
my_utils:
path: ../my_utils
When I added the local package to my project initially, I could see and debug the referenced local package just fine. I made updates to the my_utils package, did a "flutter pub get" in the project referencing my_utils, and the changes are not being picked up.
I added a new class to my_utils and it is not finding it in the other project.
I have this in analysis_options.yaml:
include: package:flutter_lints/flutter.yaml
linter:
rules:
depend_on_referenced_packages: false
Setting depend_on_referenced_packages to true didn't help.
How do I make my changes/updates in my_utils show in my referencing project?
Thanks
did you export the files properly ? e.g files inside src/?
my_utils file structure should be like the following:
lib/
...src/
......my_impl.dart
...my_utils.dart
and in your my_utils.dart should contain the following:
export 'src/my_impl.dart';
I recommend you use melos for managing multi-package projects. it might solve your problem. Also with melos bootstrap, you get flutter pub get running in all packages with one command.
you can follow the installation from here

Could not find a file named "pubspec.yaml" when auto generating code with build_runner

After I have updated Flutter to v1.22 using code generation with build_runner was not working. I was told that the proper command to use in this version was:
dart pub run build_runner watch --delete-conflicting outputs
However, I receive the following error:
Could not find a file named "pubspec.yaml" in "C:\Users\jpiab\AppData\Roaming\Pub\Cache\hosted\pub.dartlang.org\_fe_analyzer_shared-2.2.0".
I have no idea why it is looking for pubspec.yaml in that folder, since that folder is not the current working directory.
--- EDIT ---
The file exists in path:
C:/src/flutter/.pub-cache/hosted/pub.dartlang.org/_fe_analyzer_shared-2.2.0
dart is just looking for it in the wrong place. Any ideas on how to fix it?
I solved for me. I use Android Studio in Ubuntu 20.04.01 LTS.
Firstly run this command:
flutter pub get
After run this command:
flutter packages pub run build_runner build
Or:
flutter packages pub run build_runner watch
Source: https://github.com/flutter/flutter/issues/50092
Deleting the .pub-cache folder.
and then run pub get
Edit:
If above method won't work then delete the folder
C:\Users\jpiab\AppData\Roaming\Pub\Cache\hosted\pub.dartlang.org_fe_analyzer_shared-2.2.0
and then run pub get from within your project directory.
That same error I had and I resolved it by aligning my dependencies. Check if your build_runner is in the same line as flutter_test if you added it to dev_dependencies.
Error Corrected
dev_dependencies:
flutter_test:
sdk: flutter
build_runner: [latest]
My Error
dev_dependencies:
flutter_test:
sdk: flutter
build_runner: [latest]
I fixed it by changing the environment variable PUB_CACHE to the right folder.
TL;DR
Make sure you run the flutter command from the project's root directory.
As you can see, Running the command from a specific folder reproduces this error while everything works as expected from the project's root directory.

Error: Could not resolve the package 'rxdart' in 'package:rxdart/rxdart.dart'

I created an example project inside a my flutter package and inside my example project i did:
dependencies:
flutter:
sdk: flutter
my_package:
path: ../
my_package used rxdart and i received an error after run my example project
Error: Could not resolve the package 'rxdart' in
'package:rxdart/rxdart.dart'.
I ran flutter packages get but the error is still here.
I just ran into the same issue. To solve it follow these steps:
Kill your app if it's running
Run flutter clean in both your main project directory and your my_package directory
Run flutter pub get in both your main project directory and your my_package directory
Now when you build your app you should be all set.
Check first, if you added rxdart package to your pubspec.yaml as shown below:
dependencies:
flutter:
sdk: flutter
rxdart: ^0.24.1
Run flutter pub get

Error in terminal while running flutter pub get: Response:

I am new to flutter and SO, I tried this Flutter force higher package dependency version,
My code was
dependencies:
intl: ^0.15.0
I replaced it with
dependency_overrides:
intl: ^0.16.0
But I still get this error
$ flutter pub get
Error: No pubspec.yaml file found.
This command should be run from the root of your Flutter project.
Do not run this command from the root of your git clone of Flutter.
This isn't a pubspec issue. You're simply executing the command from the wrong directory.
cd into the directory where your flutter project files are. That will be the folder that contains other folders like, build, android, ios, lib along with the pubspec.yaml file. Run flutter pub get from there.
Go to the root of your project, where the lib and other directories exist. Then run the command. The best is to use the terminal of your code editor as the path would be same as root of your project in there.

Flutter web cannot use packages from mobile project

A few months ago I made an android application using flutter. The application requires various dependencies such as intl, cached network image, stopper, carousel_slider, etc.
Then right now I want to convert the project to flutter_web. Here are the steps that I did:
clone github web flutter
I run the command "flutter packages pub global activate webdev"
Then I edited pubspec.yaml and I adjusted it to pubspec.yaml in the previous project (android project)
Here is the contents of pubspec.yaml on the web flutter project:
name: flutter_web.examples.hello_world
environment:
  # You must be using Flutter> = 1.5.0 or Dart> = 2.3.0
  sdk: '> = 2.3.0-dev.0.1 <3.0.0'
dependencies:
  flutter_web: any
  flutter_web_ui: any
  stopper: ^ 1.0.1
dev_dependencies:
  build_runner: ^ 1.4.0
  build_web_compilers: ^ 2.0.0
dependency_overrides:
  flutter_web:
    git:
      url: https://github.com/flutter/flutter_web
      path: packages / flutter_web
  flutter_web_ui:
    git:
      url: https://github.com/flutter/flutter_web
      path: packages / flutter_web_ui
  provider:
    git:
      url: https://github.com/kevmoo/provider
      ref: flutter_web
When I run 'pub dev', an error occurs while resolving the package stopper. Then I tried to open github from the package stopper (https://github.com/aryzhov/flutter-stopper), after that I checked the files in the lib folder. There I found a file called stopper.dart. It turns out that in the file, still using
 import 'package: flutter / material.dart';
So that makes my pubspec error. Because the code should be replaced with
import 'package: flutter_web / material.dart';
Therefore, I tried to outsmart the problem by removing the dependency stopper on pubspec.yaml, then I created a stopper.dart file manually, then I saved it in the lib/mypackages folder. After that, I import stopper.dart from the lib/mypackages folder (it's no longer through the package).
The package stopper is just one of the packages that I use on my Android project. Actually there are many other packages that have the same problem as the package stopper. The point is I have to create the package files manually, then I change "package: flutter / ..." to "package: flutter_web /" manually, then I can import them.
What I want to ask, is there a more elegant and simple way?
Hi the instruction you are following is from an old repository here. As you can see this is discontinued. You can find the informaiton in the REadme.
Instead you should follow the instructions in this page. Read it once carefully and I would suggest to keep a backup of your main project and work on a copy.
First you will have to enable the flutter-web using flutter config --enable-web.
Then you will have to run flutter create .