Unable to generate g.dart with retrofit flutter - flutter

I am migrating my flutter project to 3.3.0 and i am calling API with retrofit which was working fine, after upgrading all packages i delete .g.dart file and run the following command to rebuild the .g.dart file
flutter pub run build_runner build it thrown the following error.
Error: No named parameter with the name 'autoCastResponse'.
autoCastResponse: annotation?.peek('autoCastResponse')?.boolValue,
^^^^^^^^^^^^^^^^
/E:/ahmad/Android/Android%20Bundle%20Setup/flutter/.pub-cache/hosted/pub.dartlang.org/retrofit-3.3.0/lib/http.dart:66:9: Context: Found this candidate, but th
e arguments don't match.
const RestApi({
^^^^^^^
/E:/ahmad/Android/Android%20Bundle%20Setup/flutter/.pub-cache/hosted/pub.dartlang.org/retrofit_generator-4.1.2/lib/src/generator.dart:494:27: Error: The getter 'autoCastResponse' isn't defined for the class 'RestApi'.
- 'RestApi' is from 'package:retrofit/http.dart' ('/E:/ahmad/Android/Android%20Bundle%20Setup/flutter/.pubcache/hosted/pub.dartlang.org/retrofit-3.3.0/lib/http.dart').
Try correcting the name to the name of an existing getter, or defining a getter or field named 'autoCastResponse'.
(clientAnnotation.autoCastResponse ?? true);
^^^^^^^^^^^^^^^^
[INFO] Precompiling build script... completed, took 900ms
[SEVERE] Failed to precompile build script .dart_tool/build/entrypoint/build.dart.
This is likely caused by a misconfigured builder definition.
pub finished with exit code 78
I also try this command flutter packages pub run build_runner build --delete-conflicting-outputs
But the result remains the same.
Here is how my abstract class looks like,
part 'rest_client.g.dart';
#RestApi(baseUrl: "https://myapi.com/")
abstract class RestClient {
factory RestClient(Dio dio, {String baseUrl}) = _RestClient;
#POST("/Flag")
Future<LoginResponse> login(#Body() LoginRequest loginRequest)`;}`
These are my packages version:
retrofit: ^3.3.0
dev_dependencies:
flutter_test:
sdk: flutter
retrofit_generator: ^4.1.2
build_runner: ^2.2.1
json_serializable: ^6.4.1
dependency_overrides:
analyzer: '5.1.0'

According to this githubLink
retrofit: 3.3.0 had bugs and the author forgot to publish the generator accordingly. So after resolving that bug using retrofit: ^3.3.1 and retrofit_generator: 4.2.0 is working fine

You will need to upgrade the package retrofit_generator to 4.2.0

you need to take care of the file naming your file name should be like what you will generate if you will generate [users.g.dart] your file name should be [ users.dart] or it will not create the file
and also upgrade your package to retrofit_generator: ^4.0.3+1

Related

Flutter Build_Runner Build Failing While Generating Floor

build failed after flutter upgrade.
$ flutter pub run build_runner build
[INFO] Generating build script completed, took 331ms
[WARNING] ../../.pub-cache/hosted/pub.dev/floor_generator-1.4.1/lib/misc/type_utils.dart:25:26: Error: The getter 'element' isn't defined for the class 'DartType'.
- 'DartType' is from 'package:analyzer/dart/element/type.dart' ('../../.pub-cache/hosted/pub.dev/analyzer-5.0.0/lib/dart/element/type.dart').
Try correcting the name to the name of an existing getter, or defining a getter or field named 'element'.
bool get isEnumType => element is EnumElement;
how to fix it ?
form pubspec.yaml:
floor_generator: ^1.4.1
build_runner: ^2.1.2
Make sure to run flutter pub get after your flutter upgrade. Then flutter pub cache repair.
I fixed this error by adding a line to pubspec.yaml
dependency_overrides:
analyzer: ^5.4.0

Flutter-Failed to build build_runner:build_runner on modularization

Describe my issue, i have modularization project so will be have different pubspec.yaml, every pubspec i use package for testing :
mockito: ^5.0.8
build_runner: ^2.0.4
dependency_overrides:
analyzer: ^1.7.0
so after generate flutter pub run build_runner build --delete-conflicting-outputs i get issue's, then i search google i it this cause analyzer, then i follow step to change analyze version, still error, in this error :
(base) dendimuhmd#macbook-pro datasources % flutter pub run build_runner build
Changing current working directory to: /Users/dendimuhmd/Documents/dev/flutter/dicoding/creative-movie/core
Failed to build build_runner:build_runner:
../../../../../../.pub-cache/hosted/pub.dartlang.org/build_resolvers-2.0.6/lib/src/resolver.dart:18:8: Error: Error when reading '../../../../../../.pub-cache/hosted/pub.dartlang.org/analyzer-1.7.2/lib/src/clients/build_resolvers/build_resolvers.dart': No such file or directory
import 'package:analyzer/src/clients/build_resolvers/build_resolvers.dart';
^
../../../../../../.pub-cache/hosted/pub.dartlang.org/build_resolvers-2.0.6/lib/src/analysis_driver.dart:9:8: Error: Error when reading '../../../../../../.pub-cache/hosted/pub.dartlang.org/analyzer-1.7.2/lib/src/clients/build_resolvers/build_resolvers.dart': No such file or directory
import 'package:analyzer/src/clients/build_resolvers/build_resolvers.dart';
^
../../../../../../.pub-cache/hosted/pub.dartlang.org/build_resolvers-2.0.6/lib/src/build_asset_uri_resolver.dart:11:8: Error: Error when reading '../../../../../../.pub-cache/hosted/pub.dartlang.org/analyzer-1.7.2/lib/src/clients/build_resolvers/build_resolvers.dart': No such file or directory
import 'package:analyzer/src/clients/build_resolvers/build_resolvers.dart';......
what is issue with analyzer, it this cause analyzer or?
Modularization structure

Conflict between dependencies when adding a new one

These were my dependencies in my pubspec.yaml:
dependencies:
...
image_picker: ^0.8.4+2
...
And everything worked fine, but now I added this:
dependencies:
...
image_picker: ^0.8.4+2
...
image_editor_pro: ^1.1.8
And running pub get I have this error:
Because image_editor_pro >=1.1.0 depends on image_picker ^0.7.4 and provauth depends on image_picker ^0.8.4+2, image_editor_pro >=1.1.0 is forbidden.
So, because provauth depends on image_editor_pro ^1.1.8, version solving failed.
pub get failed (1; So, because provauth depends on image_editor_pro ^1.1.8, version solving failed.)
I tried downgrading my version of image_picker but I get a new error:
Cannot open file, path = 'C:\Users\loren\flutter.pub-cache_temp\dir60565baa\test\fixtures\invalid\n_structure_<.>.json' (OS Error: Syntax of the name of the file, of the directory or of volume is not correct (This is my bad translation of the error).
, errno = 123)
pub get failed (66; , errno = 123))
What can I do to solve and use both the dependencies?
You can try to override the dependency so only one version is used for your project. Something like this:
name: your_app
dependencies:
image_picker: ^0.8.4+2
image_editor_pro: ^1.1.8
dependency_overrides:
image_picker: '0.8.4+2' # Use only this version for all the code depended on image picker
But you need to thoroughly tested the library that depends on the overrided dependency to check if it not introducing you a new error.
See https://dart.dev/tools/pub/dependencies#dependency-overrides
Seems like there is a conflict with image_editor_pro because the package is old.
It is better to look for another updated package with null safety, like image_editor 1.0.2, this won't have conflictions with image_picker 0.8.4+1.
And if you are willing to downgrade. ## Downgrading is a pain
You might need to downgrade the other dependencies as well. which might lead to Downgrading the Dart version.
After downgrading execute this command:
flutter clean
Then delete pubspec.lock file.
If a conflict between dependencies occurs, the simplest solution is to remove the version numbers of the two dependencies and then replace them with 'any' without the quotes in front of it. Then run pub get.
Hope you can help

Flutter hive: cannot generate Adapter files

I have a model like so:
import 'package:uuid/uuid.dart';
import 'package:hive/hive.dart';
part 'config_item.g.dart';
#HiveType()
class ConfigItem {
#HiveField(0)
String _id; // this can be a uuid or a MongoDB ObjectID
#HiveField(1)
final String deviceName;
....
}
I like to generate the Adapter file but it does not want to do it! When I call flutter packages pub run build_runner build --delete-conflicting-outputs I get the following output:
flutter packages pub run build_runner build --delete-conflicting-outputs main ✭ ✈
[INFO] Generating build script...
[INFO] Generating build script completed, took 399ms
[SEVERE] Nothing can be built, yet a build was requested.
[INFO] Initializing inputs
[INFO] Reading cached asset graph...
[INFO] Reading cached asset graph completed, took 45ms
[INFO] Checking for updates since last build...
[INFO] Checking for updates since last build completed, took 399ms
[INFO] Running build...
[INFO] Running build completed, took 3ms
[INFO] Caching finalized dependency graph...
[INFO] Caching finalized dependency graph completed, took 35ms
[INFO] Succeeded after 53ms with 0 outputs (0 actions)
In my pubspec.yaml I have:
environment:
sdk: ">=2.12.0 <3.0.0"
dependencies:
flutter:
sdk: flutter
# The following adds the Cupertino Icons font to your application.
# Use with the CupertinoIcons class for iOS style icons.
cupertino_icons: ^1.0.2
bottom_navy_bar: ^6.0.0
get_it: ^7.2.0
get_it_mixin: ^3.1.3
servicestack: ^2.0.0
font_awesome_flutter: ^9.1.0
hive: ^2.0.4
hive_flutter: ^1.1.0
path_provider: ^2.0.3
uuid: ^3.0.4
dev_dependencies:
flutter_test:
sdk: flutter
build_runner:
I tried all sort of things like
Delete .dart_tool folder
Adding *.g.dart to .gitignore
flutter clean
and a lot more I found when searching the net.
But nothing helps! Any idea what is missing?
I am using the latest (stable) versions of flutter, dart SDK and AndroidStudio.
Run this command :
flutter packages pub run build_runner build
But before that, you will have to import the generator.
Example : If your file name is project_database.dart, then in that file :
Import,
import 'package:hive/hive.dart';
part 'project_database.g.dart'; //this will show an error initially but if
// you run the above command, it will generate the generator file
I faced the same issue but I was missing hive_generator: ^1.1.1. I didn't find it in the original Docs.
Special thanks to #Denny Mueller's comment
try this,
flutter packages pub run build_runner watch --use-polling-watcher --delete-conflicting-outputs
i had same problem. i solved by saving my changes in pubspec.yaml.
just press ctrl + s in pubspec.yaml then run flutter packages pub run build_runner build again.
pub run build_runner build
after got the part .save it and the error will gone
Also add hive_generator in ur dev_dependecies.
hive_generator package can automatically generate TypeAdapters for almost any class.
If you have any other problem
refer here
Give TypeId for #HiveType.
In your Case :
import 'package:uuid/uuid.dart';
import 'package:hive/hive.dart';
part 'config_item.g.dart';
#HiveType(typeId: 0)
class ConfigItem {
#HiveField(0)
String _id; // this can be a uuid or a MongoDB ObjectID
#HiveField(1)
final String deviceName;
....
}
flutter packages pub run build_runner build --delete-conflicting-outputs
Don't forget to add hive_generator at the dev_dependencies. Here's the link
https://pub.dev/packages/hive_generator

Error when add Provider package in flutter app

I want to add Provider package in my flutter app, but has error like follow image:
flutter pub pub add provider
This link don't solve it
I solved it :)
The name of your project can not be equal to package name.
The name of my project is provider and that is compiler gave an error.
In your package's pubspec.yaml add this line like below. Then run pub get/pub upgrade:
dependencies:
provider: ^5.0.0
Note: Indentation must be considered. Not valid
dependencies:
provider: ^5.0.0
This error is caused due to versioning error.
In your pubspec.yaml file
dependencies:
provider:
Leave the version blank, it will automatically select the best one according to
the other packages.
After this run flutter pub get