Flutter project not picking up local flutter package updates - flutter

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

Related

How can you use a Flutter package developed locally as a dependency without having to push the package code every time you make a change?

I am working on a Flutter app that depends on an internal package where common functionality is extracted.
I have the package as a dependency in the pubspec.yaml as follows:
dependencies:
package1:
git:
url: git://github.com/myproj/packages.git
path: packages/package1
Everything works fine, but when I have to make a small change in package1, I have to push the code then run flutter pub upgrade in my project which takes quite a while.
How can I depend on an internal package and be able to do the development without having to push the code of the package every time?
You can write it as this to use a local package
dependencies:
package1:
path: ../packages/package1

Stop flutter build runner from rebuilding my plugin

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

How to add a library to flutter dependencies

I am new in flutter and I want to add Fast Android networking library to flutter dependencies and I don't know how to add, anyone, help me, please.
It is very simple to add a package in flutter dependencies. What you need to do is place it under the dependencies: inside the pubspec.yaml file.
So open the pubspec.yaml. You will find this file in root project folder of your flutter app. And do the following to add new dependencies/libraries:
dependencies:
flutter:
sdk: flutter
# dependencies come below here
example_dependency: ^3.2.0+1 // at the end is the version of the depenency
second_example_dependecy: any // 'any' for any version of the dependecy
To find or discover new libraries for flutter and dart to help you in building your app you can find flutter and dart packages here.
To add http package to your flutter project, from within a terminal at the project root, just type:
flutter pub add http
The latest stable version will be used.
For info on options take a look at https://dart.dev/tools/pub/cmd/pub-add

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 .

How to test the working of flutter package?

What would be the best practice to test the working of flutter package?
Recently I developed a Flutter package and I am testing its functionality by creating another flutter application and importing it to there, in this way I have to deal with two projects. Is there any method to do all it in the same project like android native development?
example/ directory contains only example.dart which is not runable? Any suggestion ?
Answer based off of Shahzad's flutter_tex package, and thanks to Remi's suggestion.
As mentioned, one way to test a package in Flutter is to create a Flutter app within the "Example" directory. In this app, list the following in the pubspec.yaml file:
dependencies:
flutter:
sdk: flutter
your_package_name:
path: ../
As shown, you specify your package's path, which is the level above the "Example" folder the test app resides in.