Dolphin
Dolphin

Reputation: 38733

Target of URI doesn't exist: 'package:flutter_gen/gen_l10n/gallery_localizations.dart'

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

Answers (30)

Alexandre Cavalcante
Alexandre Cavalcante

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

Anupam Hayat Shawon
Anupam Hayat Shawon

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

Erik Saunier
Erik Saunier

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

jtsoc
jtsoc

Reputation: 71

In my case, an intl update solved the problem. intl: ^0.18.0 -> intl: ^0.19.0

For your reference.

Upvotes: 0

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

Richard Burkhardt
Richard Burkhardt

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

Leonardo Galgano
Leonardo Galgano

Reputation: 11

You can do:

  1. Close and reopen the IDE (and the project)

Sometimes the error is corrected this way. If the error stills, in the terminal with the project do:

  1. flutter clean && flutter run
  2. 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

Yawar Osman
Yawar Osman

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

i_am_somebody
i_am_somebody

Reputation: 91

i just remove this line flutter_gen in pubspec.yaml then run flutter gen-l10n and it work

Upvotes: 7

Mayank Khandelwal
Mayank Khandelwal

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

Abdouly M
Abdouly M

Reputation: 361

I solved it by running on the terminal in the main folder:

flutter gen-l10n

Upvotes: 25

Aristidios
Aristidios

Reputation: 2321

  1. Add the following to your pubspec.yml
dependencies:
  flutter:
    sdk: flutter
  flutter_localizations:
    sdk: flutter
  intl: any
  1. In the pubspec.yaml file enable the generate flag
flutter:
  generate: true # Add this line
  1. Create a 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

  1. Run flutter clean && flutter pub get

Upvotes: 0

Farid Abbasov
Farid Abbasov

Reputation: 87

Add "generate: true" line to your pubspec.yaml file :

# The following section is specific to Flutter.

flutter: generate: true

Upvotes: 0

Mohamed BH
Mohamed BH

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

mirkancal
mirkancal

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

Ivan Mitsura
Ivan Mitsura

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:

  1. go to your l10n.yaml
  2. add 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

Meraj Hossain
Meraj Hossain

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

Elvin Sadikhov
Elvin Sadikhov

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

Okpo
Okpo

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

Aditya Perdana
Aditya Perdana

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

Elmar
Elmar

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

More details here

Upvotes: 0

Sleepingisimportant
Sleepingisimportant

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

alaasdk
alaasdk

Reputation: 1998

If you'r using VSCode, simply click "Shift+CMD+P" then "Dart: Restart Analysis Server"

Dart: Restart Analysis Server

Upvotes: 2

Phuc Trinh
Phuc Trinh

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

Mohamed Reda
Mohamed Reda

Reputation: 1607

I just solved it after adding l10n.yaml, then did this:

  1. restart your project
  2. Run:

flutter clean

flutter pub get

Upvotes: 40

Evgen
Evgen

Reputation: 87

Add new line at every arb files. E.g. into l10n/app_en.arb. Then click Pub get.

Upvotes: 1

SHUBHAM YEOLE
SHUBHAM YEOLE

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

Faisal Mulya
Faisal Mulya

Reputation: 711

View > Command Palette and then typing Dart: Restart Analysis Server.

Upvotes: 23

James Skilton
James Skilton

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

t-geh
t-geh

Reputation: 669

If you are using a package flutter_gen you need to remove it from pubscpec.yaml to resolve conflict.

Upvotes: 57

Related Questions