无法导入dart的intl包

时间:2018-05-18 17:18:57

标签: dart flutter

您好我正在尝试在我的flutter项目中使用intl包。 packages get命令成功运行,但是当我导入包时,它显示错误。

My pubspec.yaml file

对于我的dart文件中的导入,我使用以下导入

import 'package:intl/intl.dart';

我还使用flutter upgrade命令从终端升级了颤振。

7 个答案:

答案 0 :(得分:6)

以下是我发现的一些步骤,这些步骤在flutter中被视为依赖关系的问题。

  1. pubspec.yaml的问题是你必须在pub get工作之前保存它CRTL / CMD + S.从IDE运行pub get不会自动保存文件。

  2. 尝试运行flutter clean,然后运行flutter pub get。 有时当您删除插件等依赖项时,.build文件夹无法正确清理,因此您必须手动执行此操作。

  3. 您可以尝试运行pub cache repair

  4. 来修复pub缓存
  5. 有时只需重新启动IDE也可以解决问题。

答案 1 :(得分:1)

在我在“ intl”之前插入一个标签后,它开始为我工作。最终的代码集在这里...

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: ^0.1.3
  intl: ^0.16.1

答案 2 :(得分:1)

它有时需要使用 CTRL + S 重新加载正在运行的程序包。保存pubspec.yaml文件后需要重新启动IDE。

答案 3 :(得分:0)

项目清理后,您可能会遇到如下错误:

intl_browser.dart:13:8: Error: Not found: 'dart:html'

您可以清理缓存,创建所有想要刷新的Flutter项目:

- flutter clean 
- rm -rf pubspec.lock .packages .flutter-plugins 
- flutter pub pub cache repair
- flutter packages get 

但是您无法解决,直到您在代码中注释此行:

findSystemLocale()

此行与dart:html冲突,如您在下面根据当前intl的来源所见:

library intl_browser;

import "dart:async";
import "dart:html";
import "intl.dart";

// TODO(alanknight): The need to do this by forcing the user to specially
// import a particular library is a horrible hack, only done because there
// seems to be no graceful way to do this at all. Either mirror access on
// dart2js or the ability to do spawnUri in the browser would be promising
// as ways to get rid of this requirement.
/// Find the system locale, accessed as window.navigator.language, and
/// set it as the default for internationalization operations in the
/// [Intl.systemLocale] variable.
Future<String> findSystemLocale() {
  Intl.systemLocale = Intl.canonicalizedLocale(window.navigator.language);
  return new Future.value(Intl.systemLocale);
}

答案 4 :(得分:0)

遇到同样的问题,如果您要导入

import "package:intl/intl_browser.dart";

然后您将收到该错误,看来与flutter捆绑在一起的dart SDK没有所需的依赖关系。

因此只能使用

import 'package:intl/intl.dart';

,它应该可以正常工作。

答案 5 :(得分:0)

在Visual Studio Code上,我遇到了最新的稳定版本的flutter。对于我来说,以前的答案都没有帮助。

某些答案提示运行pub cache repair会耗尽我的所有数据,因为它开始下载所有flutter软件包无论我是否使用它们,并且没有解决任何问题。

最适合我的解决方案:

代替在终端中运行flutter pub get package_name,我不得不像下面这样手动将包添加到“ pubspec.yaml”文件中的依赖项下:

dependencies:
   package_name: ^1.1.0

并保存它。

保存后,IDE将为我获取软件包,一切正常。

答案 6 :(得分:-1)

我结合这个问题和here的内容修复了它。

首先,在您的 intl_standalone 中导入 main.dart,而不是 intl_browser

import 'package:intl/date_symbol_data_local.dart';
import 'package:intl/intl.dart';
import 'package:intl/intl_standalone.dart';

然后调用必要的设置函数,像这样:

void main() async {
  Intl.defaultLocale = await findSystemLocale();
  await initializeDateFormatting();
  runApp(MyApp());
}

确保将 intl 添加到您的 deps 中,如下所示:

dependencies:
  flutter:
    sdk: flutter
  intl:

然后从您的项目目录中按顺序运行以下命令:

flutter clean 
rm -rf pubspec.lock .packages .flutter-plugins 
flutter pub cache repair
flutter pub get

有了这个,我可以在构建到 Android 和 iOS 时让它工作。