出力されているエラー
以下のメッセージのエラーが出力されている
All final variables must be initialized, but 'child' isn't.
Try adding an initializer for the field.
childという引数があるもののそれが初期化(つまり代入)されていないためにエラーが出力されている
問題のコードはこちらであり、
このコード自体はTextFieldContainerというカスタムウィジェットがあり、引数のchildをbuildにて中央揃え(center)かつコンテナ化(container)しています。
import 'package:flutter/material.dart';
class TextFieldContainer extends StatelessWidget {
const TextFieldContainer({super.key, required child});
final Widget child;
@override
Widget build(BuildContext context) {
return Center(
child: Container(
child: child,
),
);
}
}
解決法
以下のようにchildに対してthisをつけてあげることが必要です。
class TextFieldContainer extends StatelessWidget {
const TextFieldContainer({super.key, required this.child});
final Widget child;
なぜなら引数として受け取ったchildをclass自身のchildに代入してあげる必要があるからです。
逆に言えば、childに代入されないまま、このコードが動かない理由はContainerにあるchildが未定義のままだとCotainer内の表示ができないからです。
ちなみにthisについて補足しておくと、
そのclass自身であるということです。
つまりfinal Widget childを指しているということです。
コメント