FilledStacks / FilledStacks/flutter-tutorials

Bottom Navigation Bar Issues

Abierto
#95 0 comentarios 0 reacciones 0 asignados Ver en GitHub
Lenguaje dominante
Dart
Estrellas
4.8k
Forks
1.7k
Métricas de merge de PR
Sin PR fusionados en 30 d

Descripción

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?

Guía de contribución

No hay ninguna guía de contribución indexada para este repositorio

Línea de trabajo

Comienza siguiendo la creación del servicio desde main.dart y app/locator.dart a través de app/service/data.dart, app/service/auth.dart y app/screenmodels/view_model_1.dart. Reproduce el flujo de BottomNavigationBar en HomeView y comprueba cuándo se instancia DataService; se considera completado cuando se resuelve el error de creación informado y se documenta o demuestra el comportamiento de cambio programático de pestañas solicitado en la issue.

Escrito por el modelo de indexación a partir del texto del issue.

Evaluación

Stack tecnológico
dart, flutter
Área
mobile
Tipo de issue
Error
Dificultad
4/5
Tiempo estimado
3-5 días
Estado de actividad
Estancado
Claridad
Necesita aclaración
Aptitud para principiantes
25/100

Recibe los nuevos issues en tu correo

Un resumen breve de issues de GitHub para principiantes.