Reputation: 38733
I am now using flutter gallary in my project, this is the package reference:
import 'package:flutter_gen/gen_l10n/gallery_localizations.dart';
but it shows:
Target of URI doesn't exist: 'package:flutter_gen/gen_l10n/gallery_localizations.dart'.
I added lib in pubspec.yaml
:
flutter_localizations:
sdk: flutter
intl: ^0.16.1
flutter_localized_locales: ^1.1.1
and added l10n.yaml
:
template-arb-file: intl_en.arb
output-localization-file: gallery_localizations.dart
output-class: GalleryLocalizations
preferred-supported-locales:
- en
use-deferred-loading: false
Am I missing something? still not work, what should I do to make it work? This is the full code:
import 'package:flutter/material.dart';
import 'package:animations/animations.dart';
import 'package:flutter_gen/gen_l10n/gallery_localizations.dart';
enum BottomNavigationDemoType {
withLabels,
withoutLabels,
}
class BottomNavigationDemo extends StatefulWidget {
const BottomNavigationDemo({Key key, @required this.type}) : super(key: key);
final BottomNavigationDemoType type;
@override
_BottomNavigationDemoState createState() => _BottomNavigationDemoState();
}
class _BottomNavigationDemoState extends State<BottomNavigationDemo> {
int _currentIndex = 0;
String _title(BuildContext context) {
switch (widget.type) {
case BottomNavigationDemoType.withLabels:
return GalleryLocalizations.of(context)
.demoBottomNavigationPersistentLabels;
case BottomNavigationDemoType.withoutLabels:
return GalleryLocalizations.of(context)
.demoBottomNavigationSelectedLabel;
}
return '';
}
@override
Widget build(BuildContext context) {
final colorScheme = Theme.of(context).colorScheme;
final textTheme = Theme.of(context).textTheme;
var bottomNavigationBarItems = <BottomNavigationBarItem>[
BottomNavigationBarItem(
icon: const Icon(Icons.add_comment),
label: GalleryLocalizations.of(context).bottomNavigationCommentsTab,
),
BottomNavigationBarItem(
icon: const Icon(Icons.calendar_today),
label: GalleryLocalizations.of(context).bottomNavigationCalendarTab,
),
BottomNavigationBarItem(
icon: const Icon(Icons.account_circle),
label: GalleryLocalizations.of(context).bottomNavigationAccountTab,
),
BottomNavigationBarItem(
icon: const Icon(Icons.alarm_on),
label: GalleryLocalizations.of(context).bottomNavigationAlarmTab,
),
BottomNavigationBarItem(
icon: const Icon(Icons.camera_enhance),
label: GalleryLocalizations.of(context).bottomNavigationCameraTab,
),
];
if (widget.type == BottomNavigationDemoType.withLabels) {
bottomNavigationBarItems = bottomNavigationBarItems.sublist(
0, bottomNavigationBarItems.length - 2);
_currentIndex =
_currentIndex.clamp(0, bottomNavigationBarItems.length - 1).toInt();
}
return Scaffold(
appBar: AppBar(
automaticallyImplyLeading: false,
title: Text(_title(context)),
),
body: Center(
child: PageTransitionSwitcher(
child: _NavigationDestinationView(
// Adding [UniqueKey] to make sure the widget rebuilds when transitioning.
key: UniqueKey(),
item: bottomNavigationBarItems[_currentIndex],
),
transitionBuilder: (child, animation, secondaryAnimation) {
return FadeThroughTransition(
child: child,
animation: animation,
secondaryAnimation: secondaryAnimation,
);
},
),
),
bottomNavigationBar: BottomNavigationBar(
showUnselectedLabels:
widget.type == BottomNavigationDemoType.withLabels,
items: bottomNavigationBarItems,
currentIndex: _currentIndex,
type: BottomNavigationBarType.fixed,
selectedFontSize: textTheme.caption.fontSize,
unselectedFontSize: textTheme.caption.fontSize,
onTap: (index) {
setState(() {
_currentIndex = index;
});
},
selectedItemColor: colorScheme.onPrimary,
unselectedItemColor: colorScheme.onPrimary.withOpacity(0.38),
backgroundColor: colorScheme.primary,
),
);
}
}
class _NavigationDestinationView extends StatelessWidget {
_NavigationDestinationView({Key key, this.item}) : super(key: key);
final BottomNavigationBarItem item;
@override
Widget build(BuildContext context) {
return Stack(
children: [
ExcludeSemantics(
child: Center(
child: Padding(
padding: const EdgeInsets.all(16),
child: ClipRRect(
borderRadius: BorderRadius.circular(8),
child: Image.asset(
'assets/demos/bottom_navigation_background.png',
package: 'flutter_gallery_assets',
),
),
),
),
),
Center(
child: IconTheme(
data: const IconThemeData(
color: Colors.white,
size: 80,
),
child: Semantics(
label: GalleryLocalizations.of(context)
.bottomNavigationContentPlaceholder(
item.label,
),
child: item.icon,
),
),
),
],
);
}
}
when I run the command flutter clean && flutter run
, shows the result:
[dolphin@MiWiFi-R4CM-srv]~/AndroidStudioProjects/Cruise% flutter clean && flutter run
Attempted to generate localizations code without having the flutter: generate flag turned on.
Check pubspec.yaml and ensure that flutter: generate: true has been added and rebuild the project. Otherwise, the localizations source code will not be
importable.
Generating synthetic localizations package has failed.
Upvotes: 99
Views: 74979
Reputation: 325
In my case, the origin of the problem was quite simple: I was running the command flutter gen-l10n
outside the root folder of my Flutter project.
Upvotes: 1
Reputation: 153
After trying all the solutions nothing worked, after closing the project from Android Studio I just opened the project in Visual Studio Code. and the miracle happened. it was fixed automatically. I hope this will help someone.
Upvotes: 0
Reputation: 10460
Try to run flutter update-packages
in ~/flutter/packages/flutter
.
flutter update-packages
Or update the Flutter SDK by using the flutter upgrade
command:
flutter upgrade
This command gets the most recent version of the Flutter SDK that’s available on your current Flutter channel.
More information on how to upgrade the Flutter SDK or switching Flutter channels : https://flutter.dev/docs/development/tools/sdk/upgrading
This will fix your import 'package:flutter_gen/gen_l10n/gallery_localizations.dart';
issue.
Upvotes: 8
Reputation: 71
In my case, an intl update solved the problem. intl: ^0.18.0 -> intl: ^0.19.0
For your reference.
Upvotes: 0
Reputation: 726
current: Flutter 3.22.0, I just always run:
dart run build_runner build -d && flutter pub get
flutter pub get
- is that create flutter_gen
package, and build_runner
always destroy it((
Upvotes: 3
Reputation: 883
I had the same problem with a project running the latest 3.22.0 version of flutter. I tried everything written here but nothing worked. I had the problem in my CI environment where everything is cleanly installed (no IDE to restart).
I found out that the folder .dart_tools
had code generated after executing flutter gen-l10n
. So the problem was that dart just couldn't see it. After executing flutter pub get
again the generated code was available to the project. So I needed to update my CI script like:
- flutter pub get
- flutter gen-l10n
- dart run build_runner build
# RUN PUB GET AGAIN TO RESCAN THE .dart_tool folder
- flutter pub get
I hope it helps.
Upvotes: 3
Reputation: 11
You can do:
Sometimes the error is corrected this way. If the error stills, in the terminal with the project do:
flutter clean && flutter run
flutter pub get
(or press pub get in Android Studio)If still not working: Click on Restart Data Analysis Server
If still not working:
flutter gen-l10n
If you didn't have l10n.yaml, create it like this:
arb-dir: lib/l10n # files folder
template-arb-file: app_en.arb # default template
output-localization-file: app_localizations.dart # generation localization file
untranslated-messages-file: untranslated_messages.txt
If you didn't have any translation, follow the documentation
Upvotes: 1
Reputation: 121
Just remove flutter_gen
from your pubspec.yaml if exist and check generate: true
, if not fixed reload the project and follow this instructions:
https://docs.flutter.dev/ui/accessibility-and-internationalization/internationalization
Upvotes: 4
Reputation: 91
i just remove this line flutter_gen
in pubspec.yaml
then run flutter gen-l10n
and it work
Upvotes: 7
Reputation: 141
Adding my contribution here, as none of the answers worked for me. I went through the documentation and found that I need to run the following command for code generation to take place. Run flutter clean
and then run
flutter gen-l10n
Upvotes: 4
Reputation: 361
I solved it by running on the terminal in the main folder:
flutter gen-l10n
Upvotes: 25
Reputation: 2321
pubspec.yml
dependencies:
flutter:
sdk: flutter
flutter_localizations:
sdk: flutter
intl: any
pubspec.yaml
file enable the generate flagflutter:
generate: true # Add this line
l10n.yaml
file at the root of your project include following content :arb-dir: lib/l10n
template-arb-file: app_en.arb
output-localization-file: app_localizations.dart
nullable-getter: false # Optional line
Adapt the code above to your project and naming
flutter clean && flutter pub get
Upvotes: 0
Reputation: 87
Add "generate: true" line to your pubspec.yaml file :
# The following section is specific to Flutter.
flutter: generate: true
Upvotes: 0
Reputation: 71
flutter packages get
Then wait some seconds to apply the changes.
If that does not work, try
flutter clean
flutter run
Upvotes: 0
Reputation: 5345
It happened to me after upgrading to Flutter 3.13.1.
I already had
flutter:
generate: true
in my place.
I solved by removing the version number from intl package, so it can get the latest intl package.
Upvotes: 0
Reputation: 501
sometimes the issue is not about class AppLocalization, the issue is that your IDE can't build synthetic packages from generated folders for some reason, you can generate code inside your l10n folder and use it like a handwritten class. How to do that:
synthetic-package: false
line into file.This way code will be generated into your lib/l10n or whatever you have as arb-dir and IDE will not have any issues, this goes with every code generated lib that rely on synthetics
Upvotes: 1
Reputation: 41
First of all, Please try to create flutter project like this :
flutter create -t skeleton -a java -i swift --org com.meraj your_app_name
Then use 'package:flutter_gen/gen_l10n/app_localizations.dart'. After this process, if you face the same problem then close your editor and open again. If this process don't work, then write a command:
flutter clean
And then write:
flutter pub get
Upvotes: 1
Reputation: 11
flutter clean flutter pub get flutter pub run phrase flutter pub run intl_utils:generate
It helped me, you can try it too
Upvotes: 0
Reputation: 417
I followed the flutter documentations here to resolve the issue:
To use flutter_localizations, add the package as a dependency to your pubspec.yaml
file:
dependencies:
flutter:
sdk: flutter
flutter_localizations: # Add this line
sdk: flutter # Add this line
Next, run pub get packages, then import the flutter_localizations library:
import 'package:flutter_localizations/flutter_localizations.dart';
The next part is critical in removing the error:
Once the flutter_localizations package is added, use the following instructions to add localized text to your application.
Add the intl package to the pubspec.yaml
file:
dependencies:
flutter:
sdk: flutter
flutter_localizations:
sdk: flutter
intl: ^0.17.0 # Add this line
Also, in the pubspec.yaml file, enable the generate flag. This is added to the section of the pubspec that is specific to Flutter, and usually comes later in the pubspec file.
# The following section is specific to Flutter.
flutter:
generate: true # Add this line
Add a new yaml
file to the root directory of the Flutter project called l10n.yaml
with the following content:
arb-dir: lib/l10n
template-arb-file: app_en.arb
output-localization-file: app_localizations.dart
This file configures the localization tool; in this example, the input files are located in ${FLUTTER_PROJECT}/lib/l10n, the app_en.arb
file provides the template, and the generated localizations are placed in the app_localizations.dart
file.
In ${FLUTTER_PROJECT}/lib/l10n
, add the app_en.arb
template file.
Next, add an app_es.arb
file in the same directory for Spanish translation of the same message:
Now, run your app so that codegen takes place. You should see generated files in: ${FLUTTER_PROJECT}/.dart_tool/flutter_gen/gen_l10n.
Add the import statement on app_localizations.dart
.
import 'package:flutter_gen/gen_l10n/app_localizations.dart';
Upvotes: 3
Reputation: 1
Target of URI doesn't exist: 'package:flutter_gen/gen_l10n/app_localizations.dart'.
I've had the same issue, and I'm using VSCode, all I did was restart the IDE and the error gone.
Upvotes: 0
Reputation: 4397
Flutter clean
or restarting editor, Android Studio won't solve the issue. You need to have l10n.yaml file inside project folder. You probably faced with this issue after creating new project and copy-pasting content from another project. Inside of l10n.yaml file is like this:
arb-dir: lib/src/localization
template-arb-file: app_en.arb
output-localization-file: app_localizations.dart
And add this line into pubspec.yaml:
# Enable generation of localized Strings from arb files.
generate: true
Upvotes: 0
Reputation: 1112
I followed the Flutter official doc (https://flutter.dev/docs/development/accessibility-and-localization/internationalization) but came across the same problem as you. I first tried "flutter upgrade". The issue still remained.
After that, I tried to close my IDE(Android studio) and open it again, and the issue was cleared!
Upvotes: 101
Reputation: 1998
If you'r using VSCode, simply click "Shift+CMD+P" then "Dart: Restart Analysis Server"
Upvotes: 2
Reputation: 41
Please add generate: true in the bottom of flutter section. After that. Restart your editor or IDE tool. Run flutter clean and flutter pub get.
environment:
dependencies:
flutter:
uses-material-design: true
generate: true
Upvotes: 1
Reputation: 1607
I just solved it after adding l10n.yaml, then did this:
flutter clean
flutter pub get
Upvotes: 40
Reputation: 87
Add new line at every arb files. E.g. into l10n/app_en.arb. Then click Pub get.
Upvotes: 1
Reputation: 19
If someone open existing project with Localisation already added. This error always comes. import 'package:flutter_gen/gen_l10n/app_localizations.dart'; not exist
So run this command in terminal : flutter pub add flutter_gen
Upvotes: 0
Reputation: 711
View > Command Palette and then typing Dart: Restart Analysis Server.
Upvotes: 23
Reputation: 69
You might need to close and reopen your IDE so it re-analyses your code base. VS Code in particular sometimes doesn't recognise changes to the code base but closing and reopening your IDE will trigger a re-index / analysis of your code and should resolve this phantom error.
Upvotes: 1
Reputation: 669
If you are using a package flutter_gen
you need to remove it from pubscpec.yaml to resolve conflict.
Upvotes: 57