🤷
【Flutter】StatefulWidgetにてlinterで「Don't put any logic in createState」
概要
FlutterでStatefulWidgetのクラスを書いている時、linterで以下のようなワーニングが表示されました。今回は、この原因とどう修正するかを書いてみます。
原因
こちらのstackoverflowの記事にある通り、StatefulWidgetのクラスでは、コンストラクタへパラメータを渡すことは推奨されていないようです。
変数を参照したい場合はno_logic_in_create_stateのドキュメントにある通り、widget
フィールドを通して行うのが適切だそうです。
修正後の実装
linterで該当の箇所を修正したら、以下の通りになります。
import 'package:flutter/material.dart';
class SampleApp extends StatefulWidget {
final String title;
const SampleApp({Key? key, required this.title}) : super(key: key);
_SampleApp createState() => _SampleApp();
}
class _SampleApp extends State<SampleApp> {
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text(widget.title),
),
body: Column(
children: const <Widget>[Text("test")],
));
}
}
Discussion