Как преобразовать RxInt в Int в Dart || Флаттер?
Я играю с трепетом,
Я столкнулся с ошибкой и не получил правильного решения
В моем приложении у меня есть несколько наблюдаемых переменных в моем контроллере GetX. При попытке применить какой-либо формат, а затем получить журнал здесь
======== 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
◢◤◢◤◢◤◢◤◢◤◢◤◢◤◢◤◢◤◢◤◢◤◢◤◢◤◢◤◢◤◢◤◢◤◢◤◢◤◢◤◢◤◢◤◢◤◢◤◢◤◢◤◢◤◢◤◢◤◢◤◢◤◢◤◢◤◢◤◢◤◢◤◢◤◢◤◢◤◢◤◢◤◢◤◢◤◢◤◢◤◢◤◢◤◢◤◢◤◢◤
====================================================================================================
Вот строка, откуда пришла эта ошибка
Obx(() => Text("You will get : ${NumberFormat.currency(locale: 'HI', name: "INR", symbol: "\u{20B9}").format(_depositController.total.value.round()/100)}"))
Я использую пакет intl для
NumberFormat
Он работал нормально, прежде чем я превратил его в использование
.obs()
на контроллере
Если кто-нибудь сможет это описать, это будет большим подспорьем
2 ответа
Решение
type 'int' is not a subtype of type 'RxInt' of 'function result'
означает, что функция возвращает целое число. Не RxInt.
При присвоении значений типам Rx используйте свойство значения. пример:
myInteger.value = 100;
При получении значения из Rx Type,
myInteger.value
Ты можешь использовать
.toInt()
преобразовать RxInt в int. Он также работает с другими материалами Rx!