[英]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.