您好我正在尝试在我的flutter项目中使用intl包。 packages get命令成功运行,但是当我导入包时,它显示错误。
对于我的dart文件中的导入,我使用以下导入
import 'package:intl/intl.dart';
我还使用flutter upgrade命令从终端升级了颤振。
答案 0 :(得分:6)
以下是我发现的一些步骤,这些步骤在flutter中被视为依赖关系的问题。
pubspec.yaml
的问题是你必须在pub get工作之前保存它CRTL / CMD + S.从IDE运行pub get不会自动保存文件。
尝试运行flutter clean
,然后运行flutter pub get
。
有时当您删除插件等依赖项时,.build
文件夹无法正确清理,因此您必须手动执行此操作。
您可以尝试运行pub cache repair
有时只需重新启动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 时让它工作。