J'essaie d'utiliser get_it afin de créer un objet singleton à utiliser. Je ne souhaite pas utiliser plusieurs objets d'API qui se connectent à FireBase. L'objet Singleton est celui de l'appel d'API pour Firebase.
J'ai utilisé le code suivant
locator.registerLazySingleton<Api>(() => new Api('teams')) ;
bien que le code suivant fonctionne
locator.registerLazySingleton<TeamViewModel>(() => new TeamViewModel()) ;
La structure de la classe API est la suivante:
class Api{
final Firestore _db = Firestore.instance;
final String path;
CollectionReference ref;
Api( this.path ) {
ref = _db.collection(path);
}
Future<QuerySnapshot> getDataCollection() {
return ref.getDocuments() ;
}
}`
Voici comment j'utilise l'objet API Singleton:
Api _api = locator<Api>();
alors que le code suivant fonctionne bien:
Api _api = Api('team');
Je reçois l'erreur suivante dans la console:
I/Flutter (2313): L'exception suivante a été lancée multiprovider de construction
I/Flutter (2313): Exception: L'objet de type API n'est pas enregistré à l'intérieur de getit
Je souhaite savoir si cela est même possible d'utiliser Getit n'est pas la bonne façon d'y aller.
réponse pour ceux qui font face à cette erreur en 2021 avec dépendance GET_IT: ^ 5.0.3
faire de la classe localisateur. Dard
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>(() =>NoteService());
}
Maintenant, appelez cette méthode SETUPLOCATOR dans MAIN.DART
void main()
{
setUpLocator() ;
runApp(MyApp());
}
et maintenant faire une propriété de classe de localisateur où vous affichez vos données car mes données sont le type de liste que vous pouvez voir dans notestervice.dart C'est pourquoi je reçois cette propriété dans la catégorie Type de liste
List<NoteForListing> notes = [];
void initState() {
List<NoteForListing> service = locator.get<NoteService>().getNotesList();
setState(() {
notes = service; });
super.initState(); }
et enfin NOTESERVERICE.DART
import 'package:rest_api_work/models/note_for_listing.Dart';
class NoteService
{
List<NoteForListing> 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()
)
];
}
}