🎉

複数のテキストフィールドを移動する際に起こったエラー

2022/12/22に公開

おこったこと

import 'package:flutter/material.dart';

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

  
  State<TestWidgets> createState() => _TestWidgetsState();
}


class _TestWidgetsState extends State<TestWidgets> {
  
  Widget build(BuildContext context) {
    return Column(
      children: [
        TextField(
          controller: TextEditingController(),
        ),
        TextField(
          controller: TextEditingController(),
        ),
      ],
    );
  }
}

このようなコードで

こんな画面の作り、日本語で文字を入力した後確定を押さず(文字に下線が出ている状態)にもう一つのテキストフィールドに移るを繰り返すと以下のようなエラーが出る

════════ Exception caught by services library ══════════════════════════════════
Range start 14 is out of text of length 2
'package:flutter/src/services/text_input.dart':
package:flutter/…/services/text_input.dart:1
Failed assertion: line 968 pos 12: 'range.start >= 0 && range.start <= text.length'

════════════════════════════════════════════════════════════════════════════════

解決策

TextFieldをTextFromFieldに変えるだけです!

Discussion