Flutter ';类型字符串不是double';

Flutter ';类型字符串不是double';,flutter,dart,flutter-layout,flutter-dependencies,flutter-web,Flutter,Dart,Flutter Layout,Flutter Dependencies,Flutter Web,我已使用控制器将pg1中的金额作为字符串导入。部分文本(total.toString())给出了 字符串不是double的子类型时出错。如何解决此问题?欢迎使用SOF 你不是在解析,而是在施法!这将强制total返回字符串或null 替换 class Pg2 extends StatelessWidget { String amount; final a = TextEditingController(); Pg2(this.amount); double get total

我已使用控制器将pg1中的金额作为字符串导入。部分文本(total.toString())给出了 字符串不是double的子类型时出错。如何解决此问题?

欢迎使用SOF

你不是在解析,而是在施法!这将强制total返回
字符串
null

替换


class Pg2 extends StatelessWidget {
  String amount;
  final a = TextEditingController();
  Pg2(this.amount);
  double get total {
    double amt = (amount as double);
    double p = (a.text as double);
    return (amt + (p / 100) * amt);
  }
  

  @override
  Widget build(BuildContext context) {
    void dialogbox() {
      showDialog(
          context: context,
          builder: (context) => AlertDialog(
                title: Text('You have to pay :'),
                content: Container(
                  child: Text(total.toString()),
                ),
              ));
    }

    return Scaffold(
      body: Column(
        children: [
          Text(amount.toString()),
          TextField(
            decoration:
                InputDecoration(labelText: 'Percent tip you want to give'),
            controller: a,
          ),
          RaisedButton(
            child: Text('Submit'),
            onPressed: dialogbox,
          )
        ],
      ),
    );
  }
}

欢迎来到SOF

你不是在解析,而是在施法!这将强制total返回
字符串
null

替换


class Pg2 extends StatelessWidget {
  String amount;
  final a = TextEditingController();
  Pg2(this.amount);
  double get total {
    double amt = (amount as double);
    double p = (a.text as double);
    return (amt + (p / 100) * amt);
  }
  

  @override
  Widget build(BuildContext context) {
    void dialogbox() {
      showDialog(
          context: context,
          builder: (context) => AlertDialog(
                title: Text('You have to pay :'),
                content: Container(
                  child: Text(total.toString()),
                ),
              ));
    }

    return Scaffold(
      body: Column(
        children: [
          Text(amount.toString()),
          TextField(
            decoration:
                InputDecoration(labelText: 'Percent tip you want to give'),
            controller: a,
          ),
          RaisedButton(
            child: Text('Submit'),
            onPressed: dialogbox,
          )
        ],
      ),
    );
  }
}


谢谢回复!你能告诉我解析和强制转换之间的区别吗?强制转换是类型转换,它们是兼容的,例如,将一个框强制转换为一个对象。但解析是读取字符串并将其值计算为数字。感谢您的回复!你能告诉我解析和强制转换之间的区别吗?强制转换是类型转换,它们是兼容的,例如,将一个框强制转换为一个对象。但解析是读取字符串并将其值计算为数字。
double get total {
    double amt = double.parse(amount);
    double p = double.parse(a.text);
    return (amt + (p / 100) * amt);
  }