본문 바로가기
개발/플러터

[Flutter] Unhandled Exception: FormatException: Invalid radix-10 number (at character 1)

by 데브시나 2022. 5. 26.

에러 메시지

I/flutter (31346): [🌎 Easy Localization] [WARNING] Localization key [분] not found
E/flutter (31346): [ERROR:flutter/lib/ui/ui_dart_state.cc(209)] Unhandled Exception: FormatException: Invalid radix-10 number (at character 1)
E/flutter (31346): 120.0
E/flutter (31346): ^
E/flutter (31346): 
E/flutter (31346): #0      int._handleFormatError (dart:core-patch/integers_patch.dart:131:5)
E/flutter (31346): #1      int._parseRadix (dart:core-patch/integers_patch.dart:142:16)
E/flutter (31346): #2      int._parse (dart:core-patch/integers_patch.dart:103:12)
E/flutter (31346): #3      int.parse (dart:core-patch/integers_patch.dart:65:12)
E/flutter (31346): #4      showTimePickerBottomSheet.<anonymous closure> (package:diaconn_aps_control/common/widget/my_bottom_picker.dart:73:198)
E/flutter (31346): #5      MappedListIterable.elementAt (dart:_internal/iterable.dart:413:31)
E/flutter (31346): #6      ListIterator.moveNext (dart:_internal/iterable.dart:342:26)
E/flutter (31346): #7      new _GrowableList._ofEfficientLengthIterable (dart:core-patch/growable_array.dart:206:27)
E/flutter (31346): #8      new _GrowableList.of (dart:core-patch/growable_array.dart:153:28)
E/flutter (31346): #9      new List.of (dart:core-patch/array_patch.dart:51:28)
E/flutter (31346): #10     ListIterable.toList (dart:_internal/iterable.dart:213:44)
E/flutter (31346): #11     showTimePickerBottomSheet (package:diaconn_aps_control/common/widget/my_bottom_picker.dart:73:220)
E/flutter (31346): #12     _TitleTimePickerWidgetState._onPicker (package:diaconn_aps_control/common/widget/title_time_picker_widget.dart:50:11)
E/flutter (31346): #13     GestureRecognizer.invokeCallback (package:flutter/src/gestures/recognizer.dart:198:24)
E/flutter (31346): #14     TapGestureRecognizer.handleTapUp (package:flutter/src/gestures/tap.dart:608:11)
E/flutter (31346): #15     BaseTapGestureRecognizer._checkUp (package:flutter/src/gestures/tap.dart:296:5)
E/flutter (31346): #16     BaseTapGestureRecognizer.handlePrimaryPointer (package:flutter/src/gestures/tap.dart:230:7)
E/flutter (31346): #17     PrimaryPointerGestureRecognizer.handleEvent (package:flutter/src/gestures/recognizer.dart:563:9)
E/flutter (31346): #18     PointerRouter._dispatch (package:flutter/src/gestures/pointer_router.dart:94:12)
E/flutter (31346): #19     PointerRouter._dispatchEventToRoutes.<anonymous closure> (package:flutter/src/gestures/pointer_router.dart:139:9)
E/flutter (31346): #20     _LinkedHashMapMixin.forEach (dart:collection-patch/compact_hash.dart:539:8)
E/flutter (31346): #21     PointerRouter._dispatchEventToRoutes (package:flutter/src/gestures/pointer_router.dart:137:18)
E/flutter (31346): #22     PointerRouter.route (package:flutter/src/gestures/pointer_router.dart:123:7)
E/flutter (31346): #23     GestureBinding.handleEvent (package:flutter/src/gestures/binding.dart:439:19)
E/flutter (31346): #24     GestureBinding.dispatchEvent (package:flutter/src/gestures/binding.dart:419:22)
E/flutter (31346): #25     RendererBinding.dispatchEvent (package:flutter/src/rendering/binding.dart:322:11)
E/flutter (31346): #26     GestureBinding._handlePointerEventImmediately (package:flutter/src/gestures/binding.dart:374:7)
E/flutter (31346): #27     GestureBinding.handlePointerEvent (package:flutter/src/gestures/binding.dart:338:5)
E/flutter (31346): #28     GestureBinding._flushPointerEventQueue (package:flutter/src/gestures/binding.dart:296:7)
E/flutter (31346): #29     GestureBinding._handlePointerDataPacket (package:flutter/src/gestures/binding.dart:279:7)
E/flutter (31346): #30     _rootRunUnary (dart:async/zone.dart:1442:13)
E/flutter (31346): #31     _CustomZone.runUnary (dart:async/zone.dart:1335:19)
E/flutter (31346): #32     _CustomZone.runUnaryGuarded (dart:async/zone.dart:1244:7)
E/flutter (31346): #33     _invoke1 (dart:ui/hooks.dart:170:10)
E/flutter (31346): #34     PlatformDispatcher._dispatchPointerDataPacket (dart:ui/platform_dispatcher.dart:331:7)
E/flutter (31346): #35     _dispatchPointerDataPacket (dart:ui/hooks.dart:94:31)
E/flutter (31346):

에러 원인

  • int.parse() 하는 과정에서 Format이 안되는 에러가 이유
  • double 타입 같은 경우 toString()으로 바꿨을 때 소수점 자리도 찍어버리는 문제가 있다.

에러 해결

수정 전 소스

void main() {
    double value1 = 1.2;
    int value2 = 0;

    value2 = int.parse(value1.toString());
}

수정 후 소스

void main() {
    double value1 = 1.2;
    int value2 = 0;

    value2 = int.parse(value1.toStringAsFixed(0));
}
  • toStringAsFixed() 메소드도 double 타입의 문자열을 소수 몇 째자리까지만 표기할 때 사용하는 메소드다.
  • 반환 타입이 String 타입이기 때문에 소수점 자리를 0으로 표기할 경우 소수점 자리가 따로 표기가 안되기 때문에 형변환을 할 수 있다.

댓글