skip to Main Content
InkWell(
                onTap: () {
                  Get.put<DetailsPaymentHistoryController>(
                      DetailsPaymentHistoryController(
                          paymentHistoryApi: PaymentHistoryApi(),
                          invoiceId: payment.invoiceId!.toString()));
                  Get.toNamed(Routes.detailsHistoryPayment);
                },
                child: Row(
                  mainAxisAlignment: MainAxisAlignment.end,
                  children: [
                    Text(
                      'More Details',
                      style: getSemiBoldStyle(
                          color: Colormanager.primary,
                          fontSize: FontSize.s15),
                    ),
                    const SizedBox(
                      width: AppSize.s4,
                    ),
                    Icon(
                      Icons.read_more,
                      color: Colormanager.darkPrimary,
                    )
                  ],
                ),
              ),

Suppose there some card and those card has their own ivoiceId "yxz123"
when i press "More Details" button it route me to the "detailsHistoryPayment" page acording to invoiceId where has some property.but whene i go back and press another "More Details" button it route me the same previous InvoiceId page. it is not showing the new invoiceId’s page.

class DetailsPaymentHistoryController extends GetxController
    with StateMixin<DetailsHistoryPaymentResponse> {
  PaymentHistoryApi paymentHistoryApi;
  String invoiceId;
  DetailsPaymentHistoryController({
   required this.paymentHistoryApi,
   required this.invoiceId,
  });

  @override
  void onInit() {
   if (kDebugMode) {
  print('--------------------------');
  print(invoiceId);
}
getPaymentHistoryDetails();
super.onInit();

}

//Get Dashboard Data
getPaymentHistoryDetails() async {
change(null, status: RxStatus.loading());

try {
  paymentHistoryApi
      .getPaymentHistoryDetails(invoiceId: invoiceId)
      .then((value) {
    var body = json.decode(value);
    print(invoiceId);

    change(DetailsHistoryPaymentResponse.fromJson(body),
        status: RxStatus.success());
    if (kDebugMode) {
      print(value);
    }
  }).onError((error, stackTrace) {
    change(null, status: RxStatus.error(AppStrings.somthingWentWrong));
    if (kDebugMode) {
      print(value);
    }
  });
} catch (error) {
  change(null, status: RxStatus.error(error.toString()));
  if (kDebugMode) {
    print(value);
  }
}
  }
}
 ............................
 Future<dynamic> getPaymentHistoryDetails({
    required String? invoiceId,
    }) =>
    http
      .get(
        Uri.parse(
            '${BaseUrl.baseUrl}/payment-history-details-merchant?invoice_id=$invoiceId'),
        headers: <String, String>{
          'Accept': 'application/json; charset=UTF-8',
          'Authorization': 'Bearer ${StorageHelper.getString(key: 'token')}'
        },
      )
      .then((value) => value.body)
      .onError((error, stackTrace) => Future.error(error.toString()));
}

I tried Get.toNamed(Routes.detailsHistoryPayment); to Get.offNamed(Routes.detailsHistoryPayment); and it work but it route me to two previous page. But i want to go back just previous page. Is there any way to go back to previous page and previous page got reload automaticly???

2

Answers


  1. Chosen as BEST ANSWER

    The main problem happens with my Get.put method. Just writing Get.putAsync method and all goes well.

    onTap: () {
                      Get.putAsync<DetailsPaymentHistoryController>(
                          await DetailsPaymentHistoryController(
                              paymentHistoryApi: PaymentHistoryApi(),
                              invoiceId: payment.invoiceId!.toString()));
                      Get.toNamed(Routes.detailsHistoryPayment);
                    },
    

  2. To go previous page, execute below.

    Get.back();

    And you could refresh previous page after await Get.toNamed('...');

    onTap: () async {
      ...
      await Get.toNamed(Routes.detailsHistoryPayment);
      // TODO: yourController.yourRefreshMethod();              
    },
    
    Login or Signup to reply.
Please signup or login to give your own answer.
Back To Top
Search