によるとFlutter Documentation
:
ウィジェットの構成が変更されるたびに didUpdateWidget が呼び出されます
ただし、次のコードでは、初回のdidUpdateWidget
直後に呼び出されます。initState
import 'package:flutter/material.dart';
void main() => runApp(MyApp());
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return MaterialApp(
title: 'Flutter Demo',
theme: ThemeData(
primarySwatch: Colors.blue,
),
home: Test(),
);
}
}
class Test extends StatefulWidget {
@override
_TestState createState() => _TestState();
}
class _TestState extends State<Test> {
@override
void initState() {
print("initState called");
super.initState();
}
@override
void didUpdateWidget(Test oldWidget) {
print("didUpdateWidget called");
super.didUpdateWidget(oldWidget);
}
@override
Widget build(BuildContext context) {
return Container();
}
}
// output
//
// initState called
// didUpdateWidget called
誰かがなぜこれが起こるのか説明できますか? どうすれば全体を比較できますoldWidget
かwidget
ありがとうございました
@pskink が述べたように更新するdidUpdateWidget
と、直後に呼び出されるのではなくinitState
、最初のビルドの後に呼び出されます
さらに別の質問は、次のコードで最初のビルドの後に呼び出される理由です。
print("didUpdateWidget called"); <--
super.didUpdateWidget(oldWidget); <--
の後に print を呼び出すとsuper.didUpdateWidget(oldWidget);
、正常に動作します。