How to Convert RxInt to Int in Dart || Flutter?

6,125
type 'int' is not a subtype of type 'RxInt' of 'function result'

means that the function is returning an integer. Not a RxInt.

When assigning values to Rx Types use value propery. example:

myInteger.value = 100;

When getting the value from Rx Type,

myInteger.value
Share:
6,125
Mijanur Rahaman
Author by

Mijanur Rahaman

Updated on December 27, 2022

Comments

  • Mijanur Rahaman
    Mijanur Rahaman over 1 year

    I am playing around with flutter,

    I am facing an error and not getting any proper solution

    In my app I have a few observable variables in my GetX controller, When trying apply some format then getting the log here

    ======== Exception caught by widgets library =======================================================
    The following _TypeError was thrown building Obx(dirty, state: _ObxState#76641):
    type 'int' is not a subtype of type 'RxInt' of 'function result'
    
    The relevant error-causing widget was: 
      Obx file:///D:/flutter/mini_rupiya/lib/views/screens/payment.dart:84:17
    When the exception was thrown, this was the stack: 
    #0      DepositController.total (package:mini_rupiya/controllers/deposit_controller.dart)
    #1      _PaymentState.build.<anonymous closure> (package:mini_rupiya/views/screens/payment.dart:84:145)
    #2      Obx.build (package:get/get_state_manager/src/rx_flutter/rx_obx_widget.dart:84:28)
    #3      _ObxState.notifyChilds (package:get/get_state_manager/src/rx_flutter/rx_obx_widget.dart:52:27)
    #4      _ObxState.build (package:get/get_state_manager/src/rx_flutter/rx_obx_widget.dart:68:41)
    ...
    ====================================================================================================
    Reloaded 7 of 1033 libraries in 2,688ms.
    
    ======== Exception caught by rendering library =====================================================
    The following assertion was thrown during layout:
    A RenderFlex overflowed by 99736 pixels on the bottom.
    
    The relevant error-causing widget was: 
      Column file:///D:/flutter/mini_rupiya/lib/views/screens/payment.dart:38:20
    The overflowing RenderFlex has an orientation of Axis.vertical.
    The edge of the RenderFlex that is overflowing has been marked in the rendering with a yellow and black striped pattern. This is usually caused by the contents being too big for the RenderFlex.
    
    Consider applying a flex factor (e.g. using an Expanded widget) to force the children of the RenderFlex to fit within the available space instead of being sized to their natural size.
    This is considered an error condition because it indicates that there is content that cannot be seen. If the content is legitimately bigger than the available space, consider clipping it with a ClipRect widget before putting it in the flex, or using a scrollable container rather than a Flex, like a ListView.
    
    The specific RenderFlex in question is: RenderFlex#d0b84 relayoutBoundary=up3 OVERFLOWING
    ...  needs compositing
    ...  parentData: offset=Offset(26.0, 26.0) (can use size)
    ...  constraints: BoxConstraints(0.0<=w<=359.4, 0.0<=h<=507.7)
    ...  size: Size(359.4, 507.7)
    ...  direction: vertical
    ...  mainAxisAlignment: center
    ...  mainAxisSize: max
    ...  crossAxisAlignment: center
    ...  verticalDirection: down
    ◢◤◢◤◢◤◢◤◢◤◢◤◢◤◢◤◢◤◢◤◢◤◢◤◢◤◢◤◢◤◢◤◢◤◢◤◢◤◢◤◢◤◢◤◢◤◢◤◢◤◢◤◢◤◢◤◢◤◢◤◢◤◢◤◢◤◢◤◢◤◢◤◢◤◢◤◢◤◢◤◢◤◢◤◢◤◢◤◢◤◢◤◢◤◢◤◢◤◢◤
    ====================================================================================================
    

    Here is the line from where this error is arrived

    Obx(() => Text("You will get : ${NumberFormat.currency(locale: 'HI', name: "INR", symbol: "\u{20B9}").format(_depositController.total.value.round()/100)}"))
    

    I am Using intl package for NumberFormat It was working fine before I have turned it into using .obs() on the controller

    If anyone can describe this, It will be a greate help

  • Mijanur Rahaman
    Mijanur Rahaman about 3 years
    I have assigned the values like this int entry = multiply(double.tryParse(text)); comm.value = (entry *.02).round(); tax.value = (comm * 0.18).round(); total.value = (entry*.9764).round();
  • Mijanur Rahaman
    Mijanur Rahaman about 3 years
    Here is the declarations var total = 0.obs; var comm = 0.obs; var tax = 0.obs;
  • Srilal Sachintha
    Srilal Sachintha about 3 years
    code you commented is fine but its better if you assigned exact data types to your Rx Types. the above error is from a point where a function returning a value to one of your variables. try making the entry also a Rx Type.
  • Mijanur Rahaman
    Mijanur Rahaman about 3 years
    these are all the usage of these variables, I have never used this total variable in my entire project
  • Mijanur Rahaman
    Mijanur Rahaman about 3 years
    first declared in a variable with .obs then used in Obx mentioned in the question then updating the value using a controller function and here on the first comment I have used these codes to update the value, where text is the String value from TextField
  • Mijanur Rahaman
    Mijanur Rahaman about 3 years
    Its working after type casting the variables