我有问题,在我的Flutter计算器项目,如果部分

mrwjdhj3  于 2022-12-30  发布在  Flutter
关注(0)|答案(1)|浏览(163)

我在做计算器
对于计算器,我想要4,321到4,321 =〉在3个数字之后,它必须把","这是文本形式的字段部分,我认为它的bether跳过这部分到代码中的therd部分(转到//////////部分)

Container(
              alignment: Alignment.centerRight,
              child: TextFormField(
                textAlign: TextAlign.end,
                readOnly: true,
                cursorColor: Colors.grey[700],
                controller: controller,
                keyboardType: TextInputType.none,
                decoration: const InputDecoration(
                  hintText: '0',
                  hintStyle: TextStyle(color: Colors.white, fontSize: 45),
                  enabledBorder: UnderlineInputBorder(
                    borderSide: BorderSide(
                      width: 0,
                      color: Colors.transparent,
                    ),
                  ),
                  focusedBorder: UnderlineInputBorder(
                    borderSide: BorderSide(
                      width: 0,
                      color: Colors.transparent,
                    ),
                  ),
                ),
                style: const TextStyle(color: Colors.white, fontSize: 43),
              ),
            ),

我上课是为了拍电梯按钮:

class ElebatedButtonMaker extends StatelessWidget {
  ElebatedButtonMaker({
    Key? key,
    required this.color,
    required this.height,
    required this.width,
    this.widget,
    required this.text,
    this.onPressed,
  }) : super(key: key);

  final String text;
  final Color color;
  final double width;
  final double height;
  void Function()? onPressed;
  Widget? widget;
  @override
  Widget build(BuildContext context) {
    return ElevatedButton(
        onPressed: onPressed ?? () {},
        style: ElevatedButton.styleFrom(
            backgroundColor: color,
            elevation: 0,
            fixedSize: Size(MediaQuery.of(context).size.width * width,
                MediaQuery.of(context).size.width * height)),
        child: text.isNotEmpty
            ? Text(
                text,
                style: const TextStyle(
                  fontSize: 25,
                ),
              )
            : widget);
  }
}

//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

class Passclass {
  const Passclass({
    this.pakonebord,
    this.resetbord,
    this.textstring,
    this.textdouble,
    required this.controller,
  });
  final bool? resetbord;
  final bool? pakonebord;
  final String? textstring;
  final TextEditingController controller;
  final int? textdouble;
  final String alamat = ',';
  passer() {
    if (textdouble != null) {
      if (textdouble == 0) {
        return controller.text = '0';
      }
      return controller.text = controller.text + textdouble.toString();
    }
    if (!(controller.text.contains('.'))) {
      return controller.text = controller.text + textstring!;
    }

    if (controller.text.length > 3) {
      return controller.text = controller.text.substring(0, 1) +
          alamat +
          controller.text.substring(1);
    } 
    //  *********BUG*************** this if must to do take 3 numbelrs and put ',' inside them
  }

  reset() {
    if (resetbord == true) {
      return controller.text = '0';
    }
  }

  pakon() {
    if (controller.text.isNotEmpty) {
      if (pakonebord == true) {
        return controller.text =
            controller.text.substring(0, controller.text.length - 1);
      }
    }
  }
}

我没有任何错误,但它没有做所有的如果的是做得很好,但这一个我不知道请帮助我
我尝试了很多机器人我没有成功我做了smplis它为我自己做:

void main() {
  String text = '4321';
  if (text.length > 3) {
    print('${text.substring(0, 1)},${text.substring(1)}');
  }
}

我确实工作得很好,但在这个项目中,我不知道它的主要问题是什么

hjqgdpho

hjqgdpho1#

您可以使用intl package代替所有这些代码来完成此操作:

import 'package:intl/intl.dart';

final numFormatter = new NumberFormat("#,##0.00", "en_US");

//usage
var formattedString = numFormatter.format(1234567.89);

//Output will be 1,234,567.89
print(formattedString);

相关问题