簡體   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