StreamBuilder は常に 2 回呼び出されますか? 最初のデータ用に 1 回、次に入力ストリーム用に 1 回?
次の StreamBuilder を初期化すると、ビルド メソッドが 2 回呼び出されることがわかります。2 番目の呼び出しは、最初の呼び出しから 0.4 秒後です。
ストリーム: ビルド 1566239814897
ストリーム: ビルド 1566239815284
import 'dart:async';
import 'dart:ui';
import 'package:flutter/material.dart';
import 'package:nocd/utils/bloc_provider.dart';
void main() =>
runApp(BlocProvider<MyAppBloc>(bloc: MyAppBloc(), child: MyApp()));
class MyAppBloc extends BlocBase {
String _page = window.defaultRouteName ?? "";
/// Stream for [getPage].
StreamController<String> pageController = StreamController<String>();
/// Observable navigation route value.
Stream get getPage => pageController.stream;
MyAppBloc() {}
@override
void dispose() {
pageController.close();
}
}
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
final MyAppBloc myAppBloc = BlocProvider.of<MyAppBloc>(context);
return StreamBuilder(
stream: myAppBloc.getPage,
initialData: "Build",
builder: (context, snapshot) {
print("Stream: " +
snapshot.data +
DateTime.now().millisecondsSinceEpoch.toString());
return Container();
},
);
}
}
StreamBuilder が 2 回呼び出されるのはなぜですか?