Flutter LayoutBuilder是一个根小部件,在setState上重新生成
我使用LayoutBuilder是为了响应初始化,但是每当我调用setState((){});在SignUp.dart中,发生了什么 MainScreen->SignUp()首先运行,然后LayoutBuilder->MaterialApp运行 这是自下而上的Flutter LayoutBuilder是一个根小部件,在setState上重新生成,flutter,android-layout,flutter-layout,flutter-dependencies,flutter-web,Flutter,Android Layout,Flutter Layout,Flutter Dependencies,Flutter Web,我使用LayoutBuilder是为了响应初始化,但是每当我调用setState((){});在SignUp.dart中,发生了什么 MainScreen->SignUp()首先运行,然后LayoutBuilder->MaterialApp运行 这是自下而上的 void main() async { await Hive.initFlutter(); await Hive.openBox('onbaord'); runApp(App()); } class App extend
void main() async {
await Hive.initFlutter();
await Hive.openBox('onbaord');
runApp(App());
}
class App extends StatefulWidget {
@override
_AppState createState() => _AppState();
}
class _AppState extends State<App> {
bool seen = false;
int count = 0;
@override
Widget build(BuildContext context) {
return LayoutBuilder(
builder: (context, state) {
return MultiBlocProvider(
providers: [
BlocProvider(create: (context) => ValidateSignUpFormBloc()),
BlocProvider(create: (context) => PageChangeBloc()),
BlocProvider(create: (context) => CheckOnboardSeenBloc()),
],
child: MaterialApp(
theme: ThemeData(
primaryColor: kPrimaryColor,
),
initialRoute: Routes.initial,
routes: {
Routes.login: (ctx) => Login(),
Routes.signup: (ctx) => SignUp(),
Routes.onboard: (ctx) => OnBoardView(),
Routes.initial: (ctx) => MainScreen(),
},
),
);
},
);
}
}
class MainScreen extends StatelessWidget {
@override
Widget build(BuildContext context) {
print("LayoutBuilder->MaterialApp -> MainScren");
print(context.deviceSize.orientation);
return SignUp();
}
}
void main()异步{
等待蜂箱。初始颤振();
等待Hive.openBox('onbaord');
runApp(App());
}
类应用程序扩展StatefulWidget{
@凌驾
_AppState createState();
}
类_AppState扩展了状态{
bool-seen=false;
整数计数=0;
@凌驾
小部件构建(构建上下文){
返回布局生成器(
生成器:(上下文、状态){
返回多BlocProvider(
供应商:[
BlocProvider(创建:(上下文)=>ValidateSignUpFormBloc()),
BlocProvider(创建:(上下文)=>PageChangeBloc()),
BlocProvider(创建:(上下文)=>CheckOnboardSeenBloc()),
],
孩子:MaterialApp(
主题:主题数据(
primaryColor:kPrimaryColor,
),
initialRoute:Routes.initial,
路线:{
Routes.login:(ctx)=>login(),
Routes.signup:(ctx)=>signup(),
Routes.onboard:(ctx)=>OnBoardView(),
Routes.initial:(ctx)=>MainScreen(),
},
),
);
},
);
}
}
类MainScreen扩展了无状态小部件{
@凌驾
小部件构建(构建上下文){
打印(“LayoutBuilder->MaterialApp->MainScren”);
打印(context.deviceSize.orientation);
返回注册();
}
}