Flutter:设置了RatingBar值后启用按钮

时间:2019-06-24 02:08:44

标签: button flutter dart

我是Flutter的新手,我试图弄清楚如何仅在AlertDialog中选择了一个评估值后才能启用我的操作按钮。当选择了“提交”按钮却未选择任何内容时,它仍将值更改为例如6.0出于某种奇怪的原因,因此“ if”语句可能无法将它与null进行比较,因为我之前在onPressed()方法中尝试过。

这是我显示AlertDialog的方法代码:

void _showDialog() {
    showDialog(
    context: context,
    barrierDismissible: false,
    builder: (context) {
        return AlertDialog(
        title: Text("Pain Rating"),
        content: RatingBar(
        onRatingChanged: (rating) { 
          setState(() { 
            _rating = rating;
            print("rating changed: rating = $_rating");
          });
        },
    maxRating: 10,
    filledIcon: Icons.radio_button_checked,
    emptyIcon: Icons.radio_button_unchecked,
    isHalfAllowed: false,
    filledColor: Colors.green,
    emptyColor: Colors.green,
    size: 28,
  ),
    actions: <Widget>[
      FlatButton(
        child: const Text('SUBMIT'),
        onPressed: () {
          print("submit pressed: rating = $_rating");
          Navigator.of(context).pop();
        },
      )
    ],
    );
  });

当前,当选择了任何一个或没有任何等级并按下“提交”按钮时,它将关闭对话框。我希望在选择等级之前禁用“提交”按钮

1 个答案:

答案 0 :(得分:0)

这是一种建议的实现方式:

var _rating = 0.0

FlatButton(
    child: const Text('SUBMIT'),
    onPressed: _rating > 0.0 
        ? () {
          print("submit pressed: rating = $_rating");
          Navigator.of(context).pop();
        } : null,
)

如果您的_rating大于0,则表示使用者更改了该值(假设您的评分不能为0)。如果是这样,则可以通过传递VoidCallback ...来启用按钮,否则,将调用null值并禁用该按钮。

如果出于任何原因需要0.0值,请使用bool变量,并在到达onRatingChanged回调后将其值更改为true,然后将我的逻辑从_rating > 0.0更改为只是您的bool变量。