FlutterでStatefulWidget(正確にはStatefulWidgetの面倒を見ている育ての親である「State」クラスの)initStateメソッドやmain関数を変更した際に、その変更を最初からビルドすることなく反映させることのできる「Hot Restart」という機能がありますが、
初回ビルド時にはbuildメソッドは1回しか回らないのに、Hot Restartするとなぜかbuildメソッドが2回回ってしまう現象が発生することがあります。
Flutterの中の人は、Widget.buildが最小限の回数で呼び出されることを保証するものではないと言っていますが、それ以上は言及されていないのでこれ以上のことはわかりません。
Flutter does not guarantee
Widget.build
will be called the minimum number of times possible. You should structure your application in a way that assumes build will be called on every frame – anything less is an optimization.(Flutter は、Widget.build が可能な限り最少回数で呼び出されることを保証しません。アプリケーションは、すべてのフレームで build が呼び出されることを想定して構成する必要があり、それ以下の回数では最適化とは言えません。)
ただ、コーディング上の問題ではなく、かつHot Restart時に発生する事象で、さらにHot Restartは実際のリリースアプリの挙動では発生し得ないことなので、問題視しなくてよいのではないかと思います。
(詳しくは、以下の動画で解説していますので、よろしければご覧下さい)