我正试图创建一个按钮,当按下时,将在测量单位(即厘米和英寸)之间循环往复。我能够从厘米到英寸,但不知道如何在按钮被按下并显示英寸的情况下,使文本动态地变回厘米。我知道我需要把我的if语句从我的setState中移出,但似乎不能让它在没有错误的情况下工作。有什么建议吗?
import 'package:flutter/material.dart';
enum Units { cm, inches }
class InputRow extends StatefulWidget {
InputRow({
this.inputParameter,
});
final String inputParameter;
@override
_InputRowState createState() => _InputRowState();
}
class _InputRowState extends State<InputRow> {
String Unit = 'cm';
Units selectedUnit;
@override
Widget build(BuildContext context) {
return Center(
child: Column(
children: <Widget>[
SizedBox(
height: 100,
),
Container(
constraints: BoxConstraints(maxWidth: 350),
child: Row(
crossAxisAlignment: CrossAxisAlignment.center,
mainAxisAlignment: MainAxisAlignment.spaceEvenly,
children: <Widget>[
Text(widget.inputParameter),
Flexible(
child: TextField(),
),
Text(Unit),
RaisedButton(
shape: new RoundedRectangleBorder(
borderRadius: new BorderRadius.circular(18.0),
side: BorderSide(color: Colors.red)),
color: Colors.deepPurple,
textColor: Colors.black,
onPressed: () {
setState(() {
selectedUnit == Units.inches ? Units.cm : Units.inches;
if (selectedUnit == Units.cm) {
Unit = 'cm';
} else {
Unit = 'inches';
}
});
},
),
],
),
)
],
));
}
}
将你的setState方法改为
setState(() {
selectedUnit =
selectedUnit == Units.inches ? Units.cm : Units.inches;
if (selectedUnit == Units.cm) {
unit = 'cm';
} else {
unit = 'inches';
}
});