FilledStacks / FilledStacks/flutter-tutorials

Bottom Navigation Bar Issues

Ouverte
#95 0 commentaires 0 réactions 0 personnes assignées Voir sur GitHub
Langage dominant
Dart
Étoiles
4.8k
Forks
1.7k
Métriques de merge des PR
Aucune PR mergée en 30 j

Description

We were able to use Bottom navigation bar, by adding parent view "HomeView" in which we are calling all the child views. Views are working just fine.

Now the issue is about the DataService is been called each time, on swap of views. Below is our code for locator.dart

```
locator.registerLazySingleton(() => DialogService());
locator.registerLazySingleton(() => NavigationService());
locator.registerLazySingleton(() => AuthenticationService());
locator.registerLazySingleton(() => DataService());

locator.registerSingleton(ViewModel1());
locator.registerSingleton(ViewModel2());
locator.registerSingleton(ViewModel3());
```
In the view we have added `initialiseSpecialViewModelsOnce: true` `viewModelBuilder: () => locator()` as well.

When we execute:
```
flutter: Error while creating DataService
flutter: Stack trace:
#0 defaultBinaryMessenger. (package:flutter/src/services/binary_messenger.dart:76:7)
#1 defaultBinaryMessenger (package:flutter/src/services/binary_messenger.dart:89:4)
#2 MethodChannel.binaryMessenger (package:flutter/src/services/platform_channel.dart:140:62)
#3 MethodChannel.setMethodCallHandler (package:flutter/src/services/platform_channel.dart:375:5)
#4 new MethodChannelFirestore (package:cloud_firestore_platform_interface/src/method_channel/method_channel_firestore.dart:27:13)
#5 FirestorePlatform.instance (package:cloud_firestore_platform_interface/cloud_firestore_platform_interface.dart:63:19)
#6 new Firestore (package:cloud_firestore/src/firestore.dart:26:42)
#7 Firestore.instance (package:cloud_firestore/src/firestore.dart:29:36)
#8 new DataService (package:Vaccine/app/service/data.dart:14:67)
#9 setupLocator. (package:Vaccine/app/locator.dart:21:39)
#10 _ServiceFactory.getObject (package:get_it/get_it_impl.dart:128:40)
#11 _GetItImplementation.get (package:get_it/get_it_impl.dart:276:34)
#12 _GetItImplementation.call (package:get_it/get_it_impl.dart:288:12)
#13 new AuthenticationService (package:Vaccine/app/service/auth.dart:10:43)
#14 setupLocator. (package:Vaccine/app/locator.dart:19:39)
#15 _ServiceFactory.getObject (package:get_it/get_it_impl.dart:128:40)
#16 _GetItImplementation.get (package:get_it/get_it_impl.dart:276:34)
#17 _GetItImplementation.call (package:get_it/get_it_impl.dart:288:12)
#18 new ScheduleScreenModel (package:Vaccine/app/screenmodels/view_model_1.dart:14:63)
#19 setupLocator (package:Vaccine/app/locator.dart:24:50)
#20 main (package:Vaccine/main.dart:9:3)
#21 _runMainZoned.. (dart:ui/hooks.dart:241:25)
#22 _rootRun (dart:async/zone.dart:1184:13)
#23 _CustomZone.run (dart:async/zone.dart:1077:19)
#24 _runZoned (dart:async/zone.dart:1619:10)
#25 runZonedGuarded (dart:async/zone.dart:1608:12)
#26 _runMainZoned. (dart:ui/hooks.dart:233:5)
#27 _startIsolate. (dart:isolate-patch/isolate_patch.dart:301:19)
#28 _RawReceivePortImpl._handleMessage (dart:isolate-patch/isolate_patch.dart:168:12)
flutter: Error while creating AuthenticationService
flutter: Stack trace:
#0 defaultBinaryMessenger. (package:flutter/src/services/binary_messenger.dart:76:7)
#1 defaultBinaryMessenger (package:flutter/src/services/binary_messenger.dart:89:4)
#2 MethodChannel.binaryMessenger (package:flutter/src/services/platform_channel.dart:140:62)
#3 MethodChannel.setMethodCallHandler (package:flutter/src/services/platform_channel.dart:375:5)
#4 new MethodChannelFirestore (package:cloud_firestore_platform_interface/src/method_channel/method_channel_firestore.dart:27:13)
#5 FirestorePlatform.instance (package:cloud_firestore_platform_interface/cloud_firestore_platform_interface.dart:63:19)
#6 new Firestore (package:cloud_firestore/src/firestore.dart:26:42)
#7 Firestore.instance (package:cloud_firestore/src/firestore.dart:29:36)
#8 new DataService (package:Vaccine/app/service/data.dart:14:67)
#9 setupLocator. (package:Vaccine/app/locator.dart:21:39)
#10 _ServiceFactory.getObject (package:get_it/get_it_impl.dart:128:40)
#11 _GetItImplementation.get (package:get_it/get_it_impl.dart:276:34)
#12 _GetItImplementation.call (package:get_it/get_it_impl.dart:288:12)
#13 new AuthenticationService (package:Vaccine/app/service/auth.dart:10:43)
#14 setupLocator. (package:Vaccine/app/locator.dart:19:39)
#15 _ServiceFactory.getObject (package:get_it/get_it_impl.dart:128:40)
#16 _GetItImplementation.get (package:get_it/get_it_impl.dart:276:34)
#17 _GetItImplementation.call (package:get_it/get_it_impl.dart:288:12)
#18 new ScheduleScreenModel (package:Vaccine/app/screenmodels/view_model_1.dart:14:63)
#19 setupLocator (package:Vaccine/app/locator.dart:24:50)
#20 main (package:Vaccine/main.dart:9:3)
#21 _runMainZoned.. (dart:ui/hooks.dart:241:25)
#22 _rootRun (dart:async/zone.dart:1184:13)
#23 _CustomZone.run (dart:async/zone.dart:1077:19)
#24 _runZoned (dart:async/zone.dart:1619:10)
#25 runZonedGuarded (dart:async/zone.dart:1608:12)
#26 _runMainZoned. (dart:ui/hooks.dart:233:5)
#27 _startIsolate. (dart:isolate-patch/isolate_patch.dart:301:19)
#28 _RawReceivePortImpl._handleMessage (dart:isolate-patch/isolate_patch.dart:168:12)
```
Code for view_mode_1.dart 14:63 is:
```
final AuthenticationService _authenticationService = locator();
final DataService _dataService = locator();

```

Kindly suggest how to rectify this?

_Originally posted by @akyjoe in https://github.com/FilledStacks/flutter-tutorials/issues/86#issuecomment-669177084_

Other issue is, how can we switch BottomNavigationBar tabs programmatically or by tapping any button in current view?

Guide de contribution

Aucun guide de contribution indexé pour ce dépôt

Piste de recherche

Commencez par suivre la création du service depuis main.dart et app/locator.dart, en passant par app/service/data.dart, app/service/auth.dart et app/screenmodels/view_model_1.dart. Reproduisez le flux de BottomNavigationBar dans HomeView et vérifiez quand DataService est instancié ; le travail est considéré comme terminé lorsque l’erreur de création signalée est résolue et que le comportement de changement programmatique d’onglet demandé dans l’issue est documenté ou démontré.

Rédigé par le modèle d'indexation à partir du texte de l'issue.

Évaluation

Stack technique
dart, flutter
Domaine
mobile
Type d'issue
Bug
Difficulté
4/5
Temps estimé
3-5 jours
Activité
À l'abandon
Clarté
À clarifier
Accessibilité débutants
25/100

Recevez les nouvelles issues par e-mail

Un résumé court des issues GitHub adaptées aux débutants.