gpt4 book ai didi

flutter - 为什么 Root Widget 需要构建两次?

转载 作者:行者123 更新时间:2023-12-03 09:37:47 31 4
gpt4 key购买 nike

我有这个非常基本的测试应用程序:

import 'package:flutter/material.dart';

void main() => runApp(MyApp());

class MyApp extends StatelessWidget {

@override
Widget build(BuildContext context) {
print("ROOT WIDGET ");
return MaterialApp(
title: 'Flutter Demo',
theme: ThemeData(
primarySwatch: Colors.blue,
),
home: Container(decoration: BoxDecoration(color: Colors.blue),),
);
}
}

日志输出调试:

Launching lib/main.dart on iPhone X in debug mode...

Found saved certificate choice "XXX". To clear, use "flutter config". Signing iOS app for device deployment using developer identity: "XXX"

Running Xcode build...

Xcode build done. 39,4s

Installing and launching...

flutter: ROOT WIDGET

Syncing files to device iPhone X...

flutter: ROOT WIDGET



日志输出 flutter run --release

Launching lib/main.dart on iPhone X in release mode...

Found saved certificate choice "XXX". To clear, use "flutter config".

Signing iOS app for device deployment using developer identity: "XXX"

Running pod install...
1,2s

Running Xcode build...
├─Building Dart code... 15,8s

├─Generating dSYM file... 0,1s

├─Stripping debug symbols... 0,0s

├─Assembling Flutter resources... 0,7s

└─Compiling, linking and signing... 48,3s

Xcode build done. 67,4s

Installing and launching...
6,8s

To quit, press "q".

flutter: ROOT WIDGET



如您所见,它仅在 Debug模式下发生。

我问的原因是,在我的真实应用中,我使用了 WebView .函数 onWebViewCreated(WebViewController controller)WebView只是第一次调用,所以 WebViewController在 Debug模式下始终为空。

最佳答案

我一直在关注这个问题

Flutter 1.22.0 • channel stable


从我的模拟器/物理手机中删除应用程序并重新安装可解决此问题。从系统设置/应用程序中从模拟器/物理删除应用程序,然后在 Debug模式下重新安装。
我不知道为什么,但我的主要小部件有时会精确地重建两次,而且我在我的主要小部件中没有做任何事情,没有 SetStates 或没有 Futurebuilder。我认为这是一个 flutter 内部错误。

关于flutter - 为什么 Root Widget 需要构建两次?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55515371/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com