Как решить проблему "Объект типа 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, это неправильный способ сделать это.

13
1

  • У меня была аналогичная проб ...
4
Общее количество ответов: 4

Ответ #1

Ответ на вопрос: Как решить проблему "Объект типа XXXXX не зарегистрирован в GetIt" во флаттере?

не забудьте вызвать setupLocator в основном 9X_android-framework файле приложения перед запуском приложения

 setupLocator(); runApp(MyApp()); 

20
0

Ответ #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); 

4
1

  • Тем не менее проблема остается прежней.<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() ) ]; } } 

2
0

Ответ #4

Ответ на вопрос: Как решить проблему "Объект типа XXXXX не зарегистрирован в GetIt" во флаттере?

Попробуйте версию GetIt. Я использую ^ 3.0.3. Это 9X_flutter-sdk работает для меня. Возможно, вы используете 9X_dart старую версию.

1
0