我在使用the Backendless plugin for Flutter时遇到了麻烦。
我包括
import 'package:backendless_sdk/backendless_sdk.dart';
(按照说明),然后可以使用例如Backendless.UserService
。但是,如果我尝试生成一个要注册的用户,例如:
var user = new BackendlessUser();
user.setEmail("info@example.org");
user.setPassword("password");
Backendless.UserService.register(user);
第一行出现错误Undefined class 'BackendlessUser'
。此类是在src/modules/user_service.dat
中定义的,该类由src/modules/modules.dart
导出,如下所示:
library modules;
export 'cache.dart';
...
export 'user_service.dart';
依次由backendless_sdk.dart
导入,如下所示:
import 'package:backendless_sdk/src/modules/modules.dart';
我本以为可以通过导入backendless_sdk.dart
间接导入它,但显然不是。当我显式导入它时(使用相同的import语句,但是现在在我自己的代码中,而不仅仅是在backendless_sdk.dart
中间接),我收到警告Don't import implementation files from another package
。但这不是一个实现文件。它作为公共API的一部分导出(至少我理解export
语句的意思)。
Dart tutorial for creating packages建议将导出语句直接放置在lib
下,而不是lib/src
中,因此我想知道这是否是插件结构中的错误,或者是否我做错了。
我将不胜感激,希望能找到一个解决这个特定问题的方法,也希望我能更好地理解dart的软件包,库,导入和导出的指针。不幸的是,我认为the language specification在这方面没有特别的帮助。
(无论我使用flutter analyze
还是IntelliJ IDEA,错误和警告都是相同的。)
答案 0 :(得分:1)
感谢您使用Flutter SDK并指出了这个问题。 确实是插件结构中的问题。 Backendless团队已经意识到了这一点,该问题将在插件的下一版本中得到解决。 现在,您可以显式导入并禁止显示警告。
答案 1 :(得分:1)
该问题已在插件的0.0.3版本中修复。请在您的pubspec.yaml中更新backendless_sdk版本。
您现在只能包括一个导入:
import 'package:backendless_sdk/backendless_sdk.dart';
还请注意,语法有所更改。因此,对于您的示例,您应该使用:
var user = new BackendlessUser()
..email = "info@example.org"
..password = "password";
Backendless.userService.register(user);