Как исправить проблему выравнивания числа в флаттере? - PullRequest
0 голосов
/ 24 марта 2020

У меня проблема с флаттером приложения на странице заказа, и, когда я помещаю ввод числа в текстовое поле количества, он дает мне неправильные указания, например, когда я набираю 2000, он дает мне 0002 I не знаю, в чем причина этого, это может быть потому, что он идентифицирует _qty как текст, но опять же, он делает вычисления правильно, я также выполнил настройку Text и Alignment Text, но все, к сожалению, не удалось, поэтому я не Не знаю, что является причиной этого или как это исправить. Вот коды моего класса Home: Вот код:

    ```import 'package:flutter/material.dart';

class Home extends StatefulWidget {
  @override
  State<StatefulWidget> createState() {
    // TODO: implement createState
    return new _HomeState();
  }
}

class _HomeState extends State<Home> {
  int radiogroup = 0;

  String userinfo = '';
  int qty = 0;

  String txt = '';

  final TextEditingController _qty = new TextEditingController();

  void totalprice(String orderprice, int deliveryprice) {
    if (orderprice.isNotEmpty && int.parse(orderprice) > 0) {
      int totalprice = int.parse(orderprice) * deliveryprice;
      setState(() {
        txt = 'your order price is \$$totalprice';
      });
    } else {
        setState(() {
        txt = "please enter a valid qty and item";
      });
    }
  }

  void radiogroupeventhandler(value) {
    setState(() {
      radiogroup = value;
      switch (radiogroup) {
        case 0:
          totalprice(_qty.text, 1200);
          break;

        case 1:
          totalprice(_qty.text, 3200);
          break;

        case 2:
          totalprice(_qty.text, 4200);
          break;

        case 3:
          totalprice(_qty.text, 6200);
          break;
      }
    });
    print(radiogroup);
  }

  void radiogroupeventhandler2(value) {
    setState(() {
      _qty.text = value;
      switch (radiogroup) {
        case 0:
          totalprice(_qty.text, 1200);
          break;

        case 1:
          totalprice(_qty.text, 3200);
          break;

        case 2:
          totalprice(_qty.text, 4200);
          break;

        case 3:
          totalprice(_qty.text, 6200);
          break;
      }
    });
    print(radiogroup);
  }

  @override
  Widget build(BuildContext context) {
    return new Scaffold(
      appBar: new AppBar(title: new Center(child: new Text("Order page"))),
      body: new Container(
        padding: EdgeInsets.all(22.4),
        alignment: Alignment.center,
        child: new ListView(
          children: <Widget>[
            new Image.asset(
              'img/user.jpg',
              height: 100.0,
              width: 100.0,
            ),
            new Container(
                padding: EdgeInsets.all(33.4),
                child: new Column(
                  children: <Widget>[
                    new Text("please make your order !"),
                    new TextField(
                      controller: _qty,
                      textAlign: TextAlign.end,
                      textDirection: TextDirection.ltr,
                      keyboardType: TextInputType.number,
                      onChanged: radiogroupeventhandler2,
                      decoration: InputDecoration(
                          hintText: "please enter you identified quantity",
                          labelText: "QTY",
                          icon: new Icon(Icons.shopping_cart)),
                    ),
                    new Padding(padding: EdgeInsets.all(22.0)),
                    new RadioListTile(
                      value: 0,
                      groupValue: radiogroup,
                      onChanged: radiogroupeventhandler,
                      title: new Text("pizza king"),
                      subtitle: new Text("pizza king fast food"),
                    ),
                    new RadioListTile(
                      value: 1,
                      groupValue: radiogroup,
                      onChanged: radiogroupeventhandler,
                      title: new Text("Burger king"),
                      subtitle: new Text("Burger king fast food"),
                    ),
                    new RadioListTile(
                      value: 2,
                      groupValue: radiogroup,
                      onChanged: radiogroupeventhandler,
                      title: new Text("MacDonalds"),
                      subtitle: new Text("MchDonals burger fast food"),
                    ),
                    new RadioListTile(
                      value: 3,
                      groupValue: radiogroup,
                      onChanged: radiogroupeventhandler,
                      title: new Text("KFC"),
                      subtitle: new Text("KFC chicken fast food"),
                    ),
                    new Text('$txt')
                  ],
                ))
          ],
        ),
      ),
    );
  }
}```

1 Ответ

1 голос
/ 24 марта 2020
_qty.text = value

Попробуйте удалить эту строку сразу после вашего setState.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...