【发布时间】:2020-10-07 18:49:21
【问题描述】:
我有一个要在下拉列表中显示的字符串列表。即
String selectedLeverage = '1 : 100';
final leverageSelected = TextEditingController();
List<String> leverage = [
"1 : 1",
"1 : 2",
"1 : 5",
"1 : 10",
"1 : 50",
"1 : 100",
"1 : 200",
"1 : 500",
"1 : 800",
"1 : 1000",
"1 : 2000",
"1 : 3000",
];
我想要什么: 当从下拉列表中选择任何特定值以在将来进行计算时,我想将字符串的最后一个元素提取为双精度值。 (例如,如果用户从下拉列表中选择了 1:100,我希望将 100 作为我从列表杠杆获得的字符串“1:100”中的双倍)
我在做什么:
double leverage = double.parse('$selectedLeverage.split(" ")[2]');
print(leverage); // i am expecting to get a doble value here =100.0 but this is giving me 1.0
这里
selectedLeverage.split(" ")
正在将字符串 "1:100" 转换为列表 ["1",":","100"] 我正在尝试通过使用将“100”转换为双 100.0
double.parse('$selectedLeverage.split(" ")[2]')
我不知道自己哪里做错了。
【问题讨论】:
-
你不能用
List<String> leverage = [代替List<int> leverage = [(或List<double>)吗? -
你的输出是什么?
-
我自己尝试了代码,结果证明,它将您的值转换为
int而不是double即使您将.00添加到您的值中,它也会忽略那些 0,因为它们不会没关系。 -
@ASADHAMEED 你在 DartPad 中测试过代码吗?如果是这样,DartPad 似乎忽略了 toDouble() 和 double.parse。该代码(@TSR)在 VSCode 调试器的 Flutter/Dart 程序中运行良好。认为这与底层的Javascript有关。我提出了一个问题来查询这个。
-
@pskink 我必须在下拉菜单中显示 1: 100。有一个 : 在 1 到 100 之间登录,这就是我使用字符串的原因。