Get 'is not a Dart library. It may be a part file or a file without Dart source code.' error on run build runner
pkozlovskiy opened this issue · comments
In all places where I use
part of 'some_class.dart';
Get this error after migrate to Brick 2
[SEVERE] brick_offline_first_with_rest_build:brickAdaptersBuilder on lib/features/events/presentation/widgets/events_list_item/event_item_title.dart (cached):
@pkozlovskiy that looks like you are trying to import Flutter code into a Brick model. Is that the case?
If it is, the problem is that Flutter ships with a version of Dart that is incompatible with build_runner.
Instead, consider using extensions to your Brick models within your Flutter code to avoid importing packages/code that are dependent on Flutter to .model.dart files.
I copy 'brick' folder in clean project and 'build_runner build" run without error.
I had to remove the use in the project
'part' and 'part of'
as a solution.
@pkozlovskiy is this issue resolved? Or are you still having problems?
Same problem here.
[SEVERE] brick_offline_first_with_rest_build:brickAdaptersBuilder on lib/features/auth/cubit/auth_login_state.dart: Asset [bable2_tracking_app|lib/features/auth/cubit/auth_login_state.dart] is not a Dart library. It may be a part file or a file without Dart source code.
Looks like brick_offline_first_with_rest_build:brickAdaptersBuilder
is considering every file with 'part of' on it. However, when using, for example, flutter_bloc
, it is usual to have 'part of' for state and event files
Is there a way to ignore specific folders like bloc
and cubit
around the project? Or another solution?
@edgarbs1998 are you importing auth_login_state
into the Brick model? Can you share your model file?
My current model file is as follows (there is no import of any state
file):
import 'package:bable2_tracking_app/features/diary/enums/diary_entry_category.dart';
import 'package:bable2_tracking_app/features/diary/enums/diary_entry_type.dart';
import 'package:brick_offline_first_with_rest/offline_first_with_rest.dart';
@ConnectOfflineFirstWithRest()
class DiaryEntry extends OfflineFirstWithRestModel {
DiaryEntry({
this.id,
required this.category,
required this.type,
required this.createdAt,
});
@Sqlite(unique: true)
final String? id;
@Rest(enumAsString: true)
@Sqlite(enumAsString: true)
final DiaryEntryCategory category;
final DiaryEntryType type;
final DateTime createdAt;
}
However, the builder is picking up all my state
files from flutter_bloc
.
I will let the full Log of the build runner task. Note I have to run two times the build runner in order to my schema.g.dart
have the part '20230103165504.migration.dart';
line for the imports to work.
Buld runner log:
flutter pub run build_runner build --delete-conflicting-outputs
[INFO] Generating build script...
[INFO] Generating build script completed, took 479ms
[INFO] Precompiling build script......
[INFO] Precompiling build script... completed, took 10.3s
FlutterGen v5.0.0 Loading ... pubspec.yaml
[INFO] Initializing inputs
[INFO] Building new asset graph...
[INFO] Building new asset graph completed, took 2.5s [INFO] Checking for unexpected pre-existing outputs....
[INFO] Checking for unexpected pre-existing outputs. completed, took 1ms
[INFO] Running build...
[INFO] Generating SDK summary...
[INFO] 4.5s elapsed, 0/16 actions completed.
[INFO] Generating SDK summary completed, took 4.3s
[SEVERE] brick_offline_first_with_rest_build:brickAdaptersBuilder on lib/boot/cubit/boot_state.dart: Asset [bable2_tracking_app|lib/boot/cubit/boot_state.dart] is not a Dart library. It may be a part file or a file without Dart source code.
[SEVERE] brick_offline_first_with_rest_build:brickAdaptersBuilder on lib/features/home/cubit/home_state.dart: Asset [bable2_tracking_app|lib/features/home/cubit/home_state.dart] is not a Dart library. It may be a part file or a file without Dart source code.
[WARNING] brick_offline_first_with_rest_build:brickAdaptersBuilder on lib/main_development.dart: Your current `analyzer` version may not fully support your current SDK version. Analyzer language version: 2.17.0 SDK language version: 2.18.0 Please update to the latest `analyzer` version (5.3.1) by running `flutter packages upgrade`. If you are not getting the latest version by running the above command, you can try adding a constraint like the following to your pubspec to start diagnosing why you can't get the latest version: dev_dependencies: analyzer: ^5.3.1
[INFO] 6.5s elapsed, 2/18 actions completed.
[INFO] 7.6s elapsed, 3/18 actions completed.
[INFO] 8.9s elapsed, 3/18 actions completed.
[INFO] 9.9s elapsed, 3/19 actions completed.
[INFO] 10.9s elapsed, 3/19 actions completed.
[INFO] 12.0s elapsed, 3/19 actions completed.
[INFO] 13.1s elapsed, 3/19 actions completed.
[INFO] 22.8s elapsed, 3/19 actions completed.
[WARNING] No actions completed for 15.5s, waiting on: - brick_offline_first_with_rest_build:brickAdaptersBuilder on lib/main_development.dart - brick_offline_first_with_rest_build:brickAdaptersBuilder on lib/l10n/l10n.dart - brick_offline_first_with_rest_build:brickAdaptersBuilder on lib/bootstrap.dart - brick_offline_first_with_rest_build:brickAdaptersBuilder on lib/app/view/app.dart - brick_offline_first_with_rest_build:brickAdaptersBuilder on lib/app/app.dart .. and 11 more
[INFO] 28.2s elapsed, 4/19 actions completed.
[INFO] 30.0s elapsed, 8/23 actions completed.
[INFO] 32.7s elapsed, 8/24 actions completed.
[SEVERE] brick_offline_first_with_rest_build:brickAdaptersBuilder on lib/features/sign_up_survivor/cubit/sign_up_form_state.dart: Asset [bable2_tracking_app|lib/features/sign_up_survivor/cubit/sign_up_form_state.dart] is not a Dart library. It may be a part file or a file without Dart source code.
[SEVERE] brick_offline_first_with_rest_build:brickAdaptersBuilder on lib/features/sign_up_survivor/cubit/sign_up_validation_state.dart: Asset [bable2_tracking_app|lib/features/sign_up_survivor/cubit/sign_up_validation_state.dart] is not a Dart library. It may be a part file or a file without Dart source code.
[SEVERE] brick_offline_first_with_rest_build:brickAdaptersBuilder on lib/features/auth/cubit/auth_login_state.dart: Asset [bable2_tracking_app|lib/features/auth/cubit/auth_login_state.dart] is not a Dart library. It may be a part file or a file without Dart source code.
[SEVERE] brick_offline_first_with_rest_build:brickAdaptersBuilder on lib/features/diary/diary_create_edit/cubit/diary_create_edit_state.dart: Asset [bable2_tracking_app|lib/features/diary/diary_create_edit/cubit/diary_create_edit_state.dart] is not a Dart library. It may be a part file or a file without Dart source code.
[SEVERE] brick_offline_first_with_rest_build:brickAdaptersBuilder on lib/features/diary/diary_list/cubit/diary_list_state.dart: Asset [bable2_tracking_app|lib/features/diary/diary_list/cubit/diary_list_state.dart] is not a Dart library. It may be a part file or a file without Dart source code.
[SEVERE] brick_offline_first_with_rest_build:brickAdaptersBuilder on lib/features/diary/diary_details/cubit/diary_details_state.dart: Asset [bable2_tracking_app|lib/features/diary/diary_details/cubit/diary_details_state.dart] is not a Dart library. It may be a part file or a file without Dart source code.
[INFO] Generated diary_entry_adapter.g.dart (DiaryEntry), took 408ms
[INFO] 37.0s elapsed, 83/85 actions completed.
[INFO] Aggregating models and migrations...
[INFO] Generated brick.g.dart, took 142ms
[INFO] Generated new migration (db/20230103165504.migration.dart), took 2ms
[INFO] Generated db/schema.g.dart, took 39ms
Generated: lib/gen/assets.gen.dart FlutterGen finished.
[INFO] 39.3s elapsed, 155/155 actions completed.
[INFO] Running build completed, took 40.2s [INFO] Caching finalized dependency graph...
[INFO] Caching finalized dependency graph completed, took 340ms
[SEVERE] Failed after 40.6s
@edgarbs1998 what is the contents of DiaryEntryType
?
[WARNING] brick_offline_first_with_rest_build:brickAdaptersBuilder on lib/main_development.dart: Your current
analyzer
version may not fully support your current SDK version. Analyzer language version: 2.17.0 SDK language version: 2.18.0 Please update to the latestanalyzer
version (5.3.1) by runningflutter packages upgrade
. If you are not getting the latest version by running the above command, you can try adding a constraint like the following to your pubspec to start diagnosing why you can't get the latest version: dev_dependencies: analyzer: ^5.3.1
This line is also a concern. Can you upgrade to analyzer 5.3.1
, and if that doesn't work, 4.7.0
?
I had some trouble updating the analyzer
due to flutter_test
from the SDK being outdated I think. I am using last Flutter version, 3.3.10 with Dart 2.18.6.
I am new to Flutter, so not fully aware of of Flutter package version solving. Is tthere anything I can change in order to force the use go analyzer: ^5.3.1
?
analyzer 5.3.1
gives me the following conflicts:
Running "flutter pub get" in brick_test...
Because every version of flutter_test from sdk depends on collection 1.16.0 and analyzer >=5.3.1 depends on collection ^1.17.0, flutter_test from sdk is incompatible with analyzer >=5.3.1.
So, because brick_test depends on both analyzer ^5.3.1 and flutter_test from sdk, version solving failed.
pub get failed (1; So, because brick_test depends on both analyzer ^5.3.1 and flutter_test from sdk, version solving failed.)
analyzer 4.7.0
gives me the following conflicts:
Running "flutter pub get" in brick_test...
Because brick_offline_first_with_rest_build <1.0.0 depends on logging ^0.11.3 and brick_offline_first_with_rest_build >=1.3.0 depends on analyzer ^3.2.0, brick_offline_first_with_rest_build <1.0.0-∞ or >=1.3.0 requires logging ^0.11.3 or analyzer ^3.2.0.
And because brick_offline_first_with_rest_build ^1.0.0 depends on brick_offline_first_abstract ^1.0.0+1, every version of brick_offline_first_with_rest_build requires brick_offline_first_abstract ^1.0.0+1 or logging ^0.11.3 or analyzer ^3.2.0.
And because brick_offline_first_with_rest 1.1.0 depends on both brick_offline_first_abstract ^2.0.0 and logging ^1.0.0, if brick_offline_first_with_rest_build any and brick_offline_first_with_rest 1.1.0 then analyzer ^3.2.0.
And because no versions of brick_offline_first_with_rest match >1.1.0 <2.0.0 and brick_test depends on brick_offline_first_with_rest ^1.1.0, every version of brick_offline_first_with_rest_build requires analyzer ^3.2.0.
So, because brick_test depends on both analyzer ^4.7.0 and brick_offline_first_with_rest_build any, version solving failed.
pub get failed (1; So, because brick_test depends on both analyzer ^4.7.0 and brick_offline_first_with_rest_build any, version solving failed.)
Also I will let my pubspec file:
name: brick_test
description: A Very Good Project created by Very Good CLI.
version: 1.0.0+1
publish_to: none
environment:
sdk: ">=2.18.0 <3.0.0"
flutter: 3.3.8
dependencies:
bloc: ^8.1.0
brick_offline_first_with_rest: ^1.1.0
brick_sqlite: any
flutter:
sdk: flutter
flutter_bloc: ^8.1.1
flutter_localizations:
sdk: flutter
intl: ^0.17.0
sqflite: any
dev_dependencies:
analyzer: ^4.7.0
bloc_test: ^9.1.0
brick_offline_first_with_rest_build: any
build_runner: any
flutter_test:
sdk: flutter
mocktail: ^0.3.0
very_good_analysis: ^3.1.0
flutter:
uses-material-design: true
generate: true
Also, I will let my project folder structure, not sure if it may affect anything on Brick 2.
| [lib]
| - [brick]
| | - [adapters]
| | - [db]
| | - data_repository.dart
| - [features]
| | - [diary]
| | | - [diary_list]
| | | | - [cubit]
| | | | | - diary_list_cubit.dart
| | | | | - diary_list_state.dart
| | | - [models]
| | | | - diary_entry.model.dart
Providing a full example repository of this issue.
Repository: https://github.com/edgarbs1998/brick_issue_309/blob/main/README.md
Log of the build_runer
run:
flutter pub run build_runner build --delete-conflicting-outputs
[INFO] Generating build script...
[INFO] Generating build script completed, took 198ms
[INFO] Precompiling build script......
[INFO] Precompiling build script... completed, took 3.4s
[INFO] Initializing inputs
[INFO] Building new asset graph...
[INFO] Building new asset graph completed, took 407ms [INFO] Checking for unexpected pre-existing outputs....
[INFO] Checking for unexpected pre-existing outputs. completed, took 0ms
[INFO] Running build...
[INFO] Generating SDK summary...
[INFO] 1.8s elapsed, 0/14 actions completed.
[INFO] Generating SDK summary completed, took 1.8s
[SEVERE] brick_offline_first_with_rest_build:brickAdaptersBuilder on lib/notes/cubit/notes_state.dart: Asset [brick_issue_309|lib/notes/cubit/notes_state.dart] is not a Dart library. It may be a part file or a file without Dart source code.
[WARNING] brick_offline_first_with_rest_build:brickAdaptersBuilder on lib/main_development.dart: Your current `analyzer` version may not fully support your current SDK version. Analyzer language version: 2.17.0 SDK language version: 2.18.0 Please update to the latest `analyzer` version (5.3.1) by running `flutter packages upgrade`. If you are not getting the latest version by running the above command, you can try adding a constraint like the following to your pubspec to start diagnosing why you can't get the latest version: dev_dependencies: analyzer: ^5.3.1
[INFO] 3.1s elapsed, 1/14 actions completed.
[INFO] 4.2s elapsed, 1/14 actions completed.
[INFO] 6.3s elapsed, 1/14 actions completed.
[INFO] 8.1s elapsed, 3/14 actions completed.
[INFO] Generated note_adapter.g.dart (Note), took 44ms
[INFO] Aggregating models and migrations...
[INFO] Generated brick.g.dart, took 2ms
[INFO] Generated db/schema.g.dart, took 7ms
[INFO] Running build completed, took 8.3s [INFO] Caching finalized dependency graph...
[INFO] Caching finalized dependency graph completed, took 31ms
[SEVERE] Failed after 8.4s
@edgarbs1998 This is helpful, thank you. Let me poke around. The logging dependency is likely what's causing this.
@edgarbs1998 I mistakenly did not publish brick_offline_first_with_rest_build
v2.1.0. I apologize for this.
I've used your pubspec and am able to bundle analyzer 4.7.0 . Please try using build_runner
again cc @pkozlovskiy
@tshedor The build_runner
is now working with no errors or warnings. I think the analyzer
conflict was also caused by the incorrect version of brick_offline_first_with_rest_build
. Thank you for your work, it is an amazing library.