繁体   English   中英

当我从我的 flutter 代码中删除 textflield 中的所有元素时,我在文本字段中遇到范围错误

[英]I am getting a range error in textfield when i remove all the elements form the textflield in my flutter code

当我使用退格键删除文本字段中的所有内容时,我遇到了一个错误。我得到的错误是:

处理手势时抛出以下 RangeError:RangeError (end): Invalid value: Only valid value is 0: -1

有没有办法让“Rs”。 字符串保留在文本字段中,当我按下小键盘上的退格键时不应将其删除。

import 'package:flutter/material.dart';
import 'package:sadapay_clone/screens/homepage.dart';
import 'package:sadapay_clone/widgets/numpad.dart';

class SendMoney extends StatefulWidget {
  const SendMoney({super.key});

  @override
  State<SendMoney> createState() => _SendMoneyState();
}

class _SendMoneyState extends State<SendMoney> {
  final TextEditingController _myController = TextEditingController();
  @override
  void initState() {
    super.initState();
    _myController.text = 'Rs. ';
  }

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      backgroundColor: const Color.fromARGB(255, 255, 129, 129),
      body: Column(
        children: [
          const SizedBox(height: 75),
          SizedBox(
            height: 70,
            child: Center(
              child: TextField(
                controller: _myController,
                textAlign: TextAlign.center,
                showCursor: false,
                style: const TextStyle(
                  color: Colors.white,
                  fontSize: 40,
                ),
                keyboardType: TextInputType.none,
                decoration: const InputDecoration(border: InputBorder.none),
                enabled: false,
                
              ),
            ),
          ),
          NumPad(
            controller: _myController,
            delete: () {
              _myController.text = _myController.text
                  .substring(0, _myController.text.length - 1);
            },
            onSubmit: () {},
          ),

出现错误是因为当 textFiled 为空时,它无法从中创建 subString。

.substring(0, _myController.text.length - 1);

您可以进行长度检查,然后创建一个 subString

delete: () {
  if(_myController.text.length>3){ // check if Rs needed any space, change the `3` based on your need
      _myController.text = _myController.text
        .substring(0, _myController.text.length - 1);
    }
  },

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM