• Github 中文镜像
Sign inSign up
Watch966
Star102.4k
Fork61.8k
Tag: flutter
Switch branches/tags
Branches
Tags
K / Flutter 2.0 报错 Unhandled Exception: FormatException: Invalid radix-10 number.md
移动浏览 Clone
加载中...
到移动设备上浏览
24 lines 2.62 KB
First commit on 24 Apr 2021

    报错

    对 Windows 平台的支持正式进入 Flutter 2.0,不过我在使用 package_info_plus 获取软件版本号的时候,将字符串转为数字遇到这个报错。

    [ERROR:flutter/lib/ui/ui_dart_state.cc(199)] Unhandled Exception: FormatException: Invalid radix-10 number (at character 1)
    1
    ^
    

    解决

    明明只有一个数字 1 却提示不是合法的十进制数字。在这个 #182 issue 里找到了答案,C/C++ 在字符串结尾加了 \0 作为字符串结束符,插件里没有忽略这个字符(不知道插件里是怎么实现的,正常 FFI 转换的时候应该自动忽略的),导致看上去只有一个字符,实际有两个符号。

    那么解决方案就简单了,截掉最后一个字符就行了,比如这样:

    final numList = version.split('\x00')[0].split('.');
    

    或者这样:

    final numList = version.replaceAll('\x00', '').split('.');
    

    要么这样:

    final numList = version.subString(0, version.length - 1).split('.');
    

    还能这样:

    final numList = RegExp("[0-9\.]+").firstMatch(version).group(0).split('.');
    

    总之得写那么长,不能用 version.trim().split('.'),我试了 trim() 不会删除 \0

    当然这种时候就要怀念 Python 了,如果是 Python,只需这样:

    numList = version[:-1].split('.')