jonataslaw / getx

Open screens/snackbars/dialogs/bottomSheets without context, manage states and inject dependencies easily with Get.
MIT License
10.24k stars 1.61k forks source link

Getx Snackbar showing initialization error. #2257

Open karangadani opened 2 years ago

karangadani commented 2 years ago

I'm having following issue while using Getx Snackbar.

In it snackbar is not showing and also Bottomsheet is also not closing even by using Get.back();

Code and Problem Log is as follow:

Debug Log: [ERROR:flutter/lib/ui/ui_dart_state.cc(209)] Unhandled Exception: LateInitializationError: Field '_controller@984359576' has not been initialized. E/flutter (31630): #0 SnackbarController._controller (package:get/get_navigation/src/snackbar/snackbar_controller.dart) package:get/…/snackbar/snackbar_controller.dart:1 E/flutter (31630): #1 SnackbarController._removeEntry package:get/…/snackbar/snackbar_controller.dart:314 E/flutter (31630): #2 SnackbarController.close package:get/…/snackbar/snackbar_controller.dart:55 E/flutter (31630): #3 _SnackBarQueue._closeCurrentJob package:get/…/snackbar/snackbar_controller.dart:370 E/flutter (31630): #4 SnackbarController.closeCurrentSnackbar package:get/…/snackbar/snackbar_controller.dart:340 E/flutter (31630): #5 GetNavigation.closeCurrentSnackbar package:get/…/src/extension_navigation.dart:1124 E/flutter (31630): #6 GetNavigation.back package:get/…/src/extension_navigation.dart:822 E/flutter (31630): #7 MyCustomerListCard.openBottomSheet. package:seller_app/widgets/customer_list_card.dart:239 E/flutter (31630): #8 _InkResponseState._handleTap package:flutter/…/material/ink_well.dart:989 E/flutter (31630): #9 GestureRecognizer.invokeCallback package:flutter/…/gestures/recognizer.dart:198 E/flutter (31630): #10 TapGestureRecognizer.handleTapUp package:flutter/…/gestures/tap.dart:608 E/flutter (31630): #11 BaseTapGestureRecognizer._checkUp package:flutter/…/gestures/tap.dart:296 E/flutter (31630): #12 BaseTapGestureRecognizer.acceptGesture package:flutter/…/gestures/tap.dart:267 E/flutter (31630): #13 GestureArenaManager.sweep package:flutter/…/gestures/arena.dart:157 E/flutter (31630): #14 GestureBinding.handleEvent package:flutter/…/gestures/binding.dart:443 E/flutter (31630): #15 GestureBinding.dispatchEvent package:flutter/…/gestures/binding.dart:419 E/flutter (31630): #16 RendererBinding.dispatchEvent package:flutter/…/rendering/binding.dart:322 E/flutter (31630): #17 GestureBinding._handlePointerEventImmediately package:flutter/…/gestures/binding.dart:374 E/flutter (31630): #18 GestureBinding.handlePointerEvent package:flutter/…/gestures/binding.dart:338 E/flutter (31630): #19 GestureBinding._flushPointerEventQueue package:flutter/…/gestures/binding.dart:296 E/flutter (31630): #20 GestureBinding._handlePointerDataPacket package:flutter/…/gestures/binding.dart:279 E/flutter (31630): #21 _rootRunUnary (dart:async/zone.dart:1442:13) E/flutter (31630): #22 _CustomZone.runUnary (dart:async/zone.dart:1335:19) E/flutter (31630): #23 _CustomZone.runUnaryGuarded (dart:async/zone.dart:1244:7) E/flutter (31630): #24 _invoke1 (dart:ui/hooks.dart:170:10) E/flutter (31630): #25 PlatformDispatcher._dispatchPointerDataPacket (dart:ui/platform_dispatcher.dart:331:7) E/flutter (31630): #26 _dispatchPointerDataPacket (dart:ui/hooks.dart:94:31) E/flutter (31630): I/flutter (31630): {"success":true} E/flutter (31630): [ERROR:flutter/lib/ui/ui_dart_state.cc(209)] Unhandled Exception: LateInitializationError: Field '_controller@984359576' has not been initialized. E/flutter (31630): #0 SnackbarController._controller (package:get/get_navigation/src/snackbar/snackbar_controller.dart) package:get/…/snackbar/snackbar_controller.dart:1 E/flutter (31630): #1 SnackbarController._removeEntry package:get/…/snackbar/snackbar_controller.dart:314 E/flutter (31630): #2 SnackbarController.close package:get/…/snackbar/snackbar_controller.dart:55 E/flutter (31630): #3 _SnackBarQueue._closeCurrentJob package:get/…/snackbar/snackbar_controller.dart:370 E/flutter (31630): #4 SnackbarController.closeCurrentSnackbar package:get/…/snackbar/snackbar_controller.dart:340 E/flutter (31630): #5 GetNavigation.closeCurrentSnackbar package:get/…/src/extension_navigation.dart:1124 E/flutter (31630): #6 GetNavigation.back package:get/…/src/extension_navigation.dart:822 E/flutter (31630): #7 CustomerController.addCustomer package:seller_app/…/customer/customer_controller.dart:87

Code -

import 'package:get/get.dart'; import 'package:seller_app/infrastructure/customer_service.dart'; import 'package:seller_app/models/customer/add_customer_model.dart'; import 'package:seller_app/models/customer/all_customer_model.dart'; import 'package:seller_app/models/customer/my_customer_model.dart'; import 'package:seller_app/models/customer/remove_customer_model.dart'; import 'package:seller_app/utils/states.dart';

class CustomerController extends GetxController { var myCustomerData = MyCustomerModel().obs; var _fetchMyCustomerStatus = States.INITIAL_STATE.obs;

get mycustomerDataStatus => _fetchMyCustomerStatus.value;

List get myCustomerList => myCustomerData.value.data!.data!;

fetchMyCustomersData() async { _fetchMyCustomerStatus.value = States.LOADING_STATE; try { var response = await CustomerService.getMyCustomer(); // print('here $response');

  if (response == false) {
    _fetchMyCustomerStatus.value = States.ERROR_STATE;

    Get.snackbar('Error', 'Something went wrong');
  } else {
    _fetchMyCustomerStatus.value = States.SUCCESS_STATE;

    myCustomerData.value = response;
    // Get.snackbar('Data Fetched', 'Hurry');
  }
} catch (e) {
  _fetchMyCustomerStatus.value = States.ERROR_STATE;

  Get.snackbar('Dio Error', 'Opps Something went wrong');
}

}

//Add Customer api

addCustomer(AddCustomerModel customer)async{

try {
  var response = await CustomerService.addCustomer(customer);
  if(response){
    // fetchMyCustomersData();
    Get.snackbar('Success', 'Customer added successfully');
    myCustomerData.refresh();
    Get.back();
  }else{
    // Get.snackbar('Error', 'Something went wrong');
  }
} catch (e) {
  print(e);
  // Get.snackbar('Error', 'Something went DIO');
}

}

updateCustomer(AddCustomerModel customer)async{ try { var response = await CustomerService.addCustomer(customer); if(response){ fetchMyCustomersData(); // Get.snackbar('Success', 'Customer added successfully'); }else{ Get.snackbar('Error', 'Something went wrong'); } } catch (e) { print(e); Get.snackbar('Error', 'Something went DIO'); }

}

removeCustomer(id)async{ try { var response = await CustomerService.removeCustomer(RemoveCustomerModel(clientId: id.toString())); if(response){ fetchMyCustomersData(); // Get.snackbar('Success', 'Customer added successfully'); }else{ Get.snackbar('Error', 'Something went wrong'); } } catch (e) { print(e); Get.snackbar('Error', 'Something went DIO'); } }

@override void onInit() { // TODO: implement onInit fetchMyCustomersData(); super.onInit(); }

@override void dispose() { // TODO: implement dispose super.dispose(); } }

AbdrahumanFikry commented 2 years ago

Same issue

Shreemanarjun commented 2 years ago

can you try to call same function within onReady() ? Can you specify getx version you are using?

karangadani commented 2 years ago

can you try to call same function within onReady() ? Can you specify getx version you are using?

My get version is 4.6.1 , Anyways that error automatically resolves in my project.. Idk how but it is working now.. 😅

taylanyildiz commented 2 years ago

same issue

Shreemanarjun commented 2 years ago

same issue Which version of getx?

taylanyildiz commented 2 years ago

@Shreemanarjun get 4.6.5 and I changed getx version to 4.6.1 issue fixed.

taylanyildiz commented 2 years ago

When run the get.back() method, it gives an error, the following snackbar controller is not initalized, I am not using the snackbar anyway. Sometimes when I come back from the screen, it gives this error, sometimes when closing the dialogs.

kmajor commented 1 year ago

Same, getting this error using Get.back(). Using 4.6.5 and downgraded to 4.6.1 and still getting this. This is an old-ish ticket with only a handful people getting it, must be something we're doing wrong on our ends.

altafkhan8719 commented 1 year ago

getting the same issue, any update ???

jonex41 commented 1 year ago

same issue, any update

taylanyildiz commented 1 year ago

@jonex41 Check it please I was getting the same error I found what was causing it and realized that I am trying to call the Snackbar without GetMaterialApp loaded.

For example:

void main(){
    // Let this be our method that runs the snackbar
    checkInternetConnection();
    runApp(App());
}

///
void checkInternetConnection(){
    if(status){
        // Show Snackbar 
    }else{
        // Show Snackbar
    }
}

/**
  * When you use it this way, Snackbar will not work and will crash.
  * It will also cause the `Get.back()` method to crash.
*/

class App extends StatelessWidget{

    @override
    Widget build(BuildContext context){
        return GetMaterialApp(...)
    }
}
jonex41 commented 1 year ago

@taylanyildiz i am using the getmaterialApp(), my issues is that i have it working fine when i open my app on tapping on icon, but when i terminate app and open from notification, that when i get the issues, the Get.back dont work, the snackbar is not showing, all of those

alphawizzflutterteam commented 1 month ago

i applied each and every solution. 1.Flutter clean & pub get 2.Update and downgrade Get Dependency : now get 4.6.1 3.I am using GetMaterialApp in main.dart 4.i update other dependencies also.

Now its working it is fixed now, try this and reinstall the application and restart the app also, it will work.