Flutter 3にアップグレードしたら、No named parameter with the name 'maxLengthEnforced'のエラー

※当サイトは、アフィリエイト広告を利用しています

結論:「flutter_typeahead」パッケージを最新に更新

2022/7/3 Flutter エラー・バグ日記

 

2022/7/1に、Flutter 3.0.4がリリースされたので、そろそろFlutter 3にしてみようと思い、2.10.4からアップグレードを実施。

 

アップグレード後、既存のプロジェクトをビルドすると、TextFieldで字数制限をする「maxLengthEnforced」プロパティに関するエラーが発生。

 

本記事はライトな日記思考で書いているので、詳細説明はしておらず、基本、テキストのみで画像とかは載せておりません。。m(_ _)m

解説記事ではないため、解決していない内容や、その時々の間違った解釈を述べてしまっている可能性が大いにありますので、何卒、ご了承ください。

 

エラー文は以下のとおり。

 

../../flutter/.pub-cache/hosted/pub.dartlang.org/flutter_typeahead-3.2.4/lib/src/flutter_typeahead.dart:936:9: Error: No named parameter with the name 'maxLengthEnforced'.
        maxLengthEnforced: widget.textFieldConfiguration.maxLengthEnforced,
        ^^^^^^^^^^^^^^^^^
../../flutter/packages/flutter/lib/src/material/text_field.dart:276:9: Context: Found this candidate, but the arguments don't match.
  const TextField({
        ^^^^^^^^^
・・・

 

調べたところ、下記の公式ページによると「maxLengthEnforced」は廃止され、「maxLengthEnforcement」に変更されたとのこと。

 

 

そこで、TextFieldの実装箇所を確認してみたが、そもそも「maxLengthEnforced」を使っている場所は見つけられなかった(よく考えると設定した記憶もない)。

 

おかしいと思い、エラー文をよく見ると、「flutter_typeahead.dart」にエラーがあると書かれていた。

 

「flutter_typeahead」は、「TextField」や「TextFormField」の下側に、検索候補のリストを表示させてくれるパッケージであり、確かにプロジェクトに導入していた。

 

どうやら、このパッケージ内で廃止された「maxLengthEnforced」が使われていた模様。

 

下記「flutter_typeahead」の説明ページを確認すると、ChangeLogの「3.2.5 - 18-Apr-2022」に、「Fix maxLengthEnforced deprecation」と書かれており、バージョン3.2.5でこの問題への対処がなされていると分かった。

 

 

※自分が使っていたのはバージョン3.2.4だったので、惜しかった。。

 

早速、現時点で最新のバージョン4.0.0に入れ替えてビルドしたところ、エラーは解消された。

 

メジャーアップデートがあると、非推奨のメソッドやプロパティ等が廃止されることがあるので、非推奨マークがついたら極力変更するように心がけていたが、パッケージのバージョンにも注意する必要があることを理解。

 

リリースしたアプリ(全てFlutterで開発)

 

個人アプリ開発で役立ったもの

おすすめの学習教材

超初心者向けでオススメな元Udemyの講座/

 

 \キャンペーン時を狙えば安価で網羅的な内容が学べる(日本語訳あり)/

 

\Gitの基礎について無料で学べる/

 

おすすめの学習書籍

実用的image_pickerに関してかなり助けられた/

 

Dartの基礎文法を素早くインプットできる/


Dart入門 - Dartの要点をつかむためのクイックツアー

タイトルとURLをコピーしました