Как решить проблему "Объект типа 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