Как решить проблему "Объект типа XXXXX не зарегистрирован в GetIt" во флаттере?
Я пытаюсь использовать get_it для создания 9X_firebase одноэлементного объекта, который будет использоваться. Я 9X_flutter-packages не хочу использовать несколько объектов 9X_android-ui API, которые подключаются к Firebase. Одноэлементный 9X_android-api объект - это объект вызова API для firebase.
Я 9X_firebase-android использовал следующий код
locator.registerLazySingleton(() => new Api('teams')) ;
пока работает следующий 9X_flutter-dependencies код
locator.registerLazySingleton(() => new TeamViewModel()) ;
Структура класса Api выглядит следующим 9X_flutter образом:
class Api{
final Firestore _db = Firestore.instance;
final String path;
CollectionReference ref;
Api( this.path ) {
ref = _db.collection(path);
}
Future getDataCollection() {
return ref.getDocuments() ;
}
}`
Вот как я использую одноэлементный 9X_android-api объект API:
Api _api = locator();
в то время как следующий код 9X_flutter-dependencies работает нормально:
Api _api = Api('team');
В консоли появляется 9X_flutter-packages следующая ошибка:
I / flutter (2313): при 9X_android-sdk построении мультипровайдера возникло следующее 9X_flutter-sdk _Exception:
I / flutter (2313): Исключение: объект 9X_flutter-packages типа Api не зарегистрирован внутри GetIt
Я 9X_android-framework хочу знать, возможно ли это вообще с помощью 9X_dart getit, это неправильный способ сделать это.
- У меня была аналогичная проб ...
Ответ #1
Ответ на вопрос: Как решить проблему "Объект типа XXXXX не зарегистрирован в GetIt" во флаттере?
не забудьте вызвать setupLocator в основном 9X_android-framework файле приложения перед запуском приложения
setupLocator();
runApp(MyApp());
Ответ #2
Ответ на вопрос: Как решить проблему "Объект типа XXXXX не зарегистрирован в GetIt" во флаттере?
Попробуйте использовать следующий код для 9X_flutter-packages своей основной функции.
GetIt locator = GetIt.instance;
void main() {
locator.registerLazySingleton(() => new Api('teams')) ;
runApp(MyApp());
}
Или попробуйте создать 9X_dart отдельный файл для локатора службы, например:
service_locator.dart
GetIt sl = GetIt.instance;
final httpLink = HttpLink(...);
final GraphQLClient client = GraphQLClient(
cache: InMemoryCache(),
link: httpLink,
);
void setUpServiceLocator() {
// Services
sl.registerSingleton(LocationsService(http.Client()));
...
// Managers
sl.registerSingleton(LocationsManager());
...
}
main.dart
void main() {
WidgetsFlutterBinding.ensureInitialized();
setUpServiceLocator();
runApp(MyApp());
}
some_file.dart
import 'package:my_awesome_app/service_locator.dart';
...
// call it anywhere you want on your code
sl().updateLocationsCommand.execute(query);
// or
sl.get().updateLocationsCommand.execute(query);
- Тем не менее проблема остается прежней.<p><span clas ...
Ответ #3
Ответ на вопрос: Как решить проблему "Объект типа XXXXX не зарегистрирован в GetIt" во флаттере?
ответ для тех, кто столкнется с этой ошибкой 9X_firebase-android в 2021 году с зависимость get_it: ^ 5.0.3
сделать 9X_firebase-android локатор классов. дротик
import 'package:get_it/get_it.dart';
import 'package:rest_api_work/Service/note_service.dart';
final locator = GetIt.instance;
void setUpLocator()
{
locator.registerLazySingleton(() =>NoteService());
}
Теперь вызовите этот 9X_flutter-packages метод setUpLocator в main.dart
void main()
{
setUpLocator() ;
runApp(MyApp());
}
и теперь создайте свойство 9X_flutter-dependencies класса локатора, в котором вы показываете 9X_android-framework свои данные, потому что мои данные относятся 9X_firebase к типу списка, который вы можете увидеть 9X_dart в noteservice.dart, поэтому я получаю это 9X_dart свойство в классе типа списка
List notes = [];
void initState() {
List service = locator.get().getNotesList();
setState(() {
notes = service; });
super.initState(); }
и, наконец, noteserverice.dart
import 'package:rest_api_work/models/note_for_listing.dart';
class NoteService
{
List getNotesList()
{
return
[
new NoteForListing(
noteID :"1",
noteTitle:"Note 1",
createDateTime:DateTime.now(),
latestEditDateTime:DateTime.now()
),
new NoteForListing(
noteID :"2",
noteTitle:"Note 2",
createDateTime:DateTime.now(),
latestEditDateTime:DateTime.now()
),
new NoteForListing(
noteID :"3",
noteTitle:"Note 3",
createDateTime:DateTime.now(),
latestEditDateTime:DateTime.now()
)
];
}
}
Ответ #4
Ответ на вопрос: Как решить проблему "Объект типа XXXXX не зарегистрирован в GetIt" во флаттере?
Попробуйте версию GetIt. Я использую ^ 3.0.3. Это 9X_flutter-sdk работает для меня. Возможно, вы используете 9X_dart старую версию.
-
6
-
9
-
2
-
3
-
10
-
6
-
3
-
8
-
2
-
5
-
1
-
5
-
3
-
1
-
14
-
2
-
2
-
1
-
2
-
4
-
1
-
2
-
1
-
10
-
9
-
1
-
1
-
10
-
6
-
4
-
10
-
8
-
3
-
4
-
30
-
2
-
1
-
4
-
6
-
1
-
4
-
2
-
3
-
1
-
5
-
7
-
3
-
17
-
2
-
2