flutterで画面を動的に作りたい場合に、
MediaQuery.of(context).size.width
を使って、サイズを指定することがあると思います。
この時に、context
が必要になって、いちいち渡すのが面倒だなと思ったんですよね。。
labelA(context) {
size = MediaQuery.of(context).size.width * 0.8;
return Text('A', style: TextStyle(fontSize: size));
}
↑こんな感じ。。
なので調べました!
が、
結論としてcontextをグローバルで取得する方法はありません!
なのでcontext
を使いたいような画面パーツを使る場合は、
関数を定義してcontext
を渡すよりも、StatelessWidget
を使うのが、
スマートだと思います。
class LabelA extends StatelessWidget {
size = MediaQuery.of(context).size.width * 0.8;
const LabelA({Key? key}) : super(key: key);
@override
Widget build(BuildContext context) {
return Text('A', style: TextStyle(fontSize: size));
}
}
Flutter開発で知らないと損すること