如果您运行Flutter制作的应用并进入主屏幕一段时间后,会不断出现以下消息

eno*_*no2 7 flutter flutter-layout flutter-web flutter-widget

我很害怕。这是一个错误吗?如果您运行它并转到主屏幕,此消息将不断出现。\n返回应用程序也是如此。

\n

下面是我的代码的一部分。

\n

此页面支持 YouTube 视频和相机功能。

\n
List<CameraDescription> cameras = List.empty(growable: true); \n\nclass Home extends StatefulWidget {\n  @override\n  const Home({Key? key}) : super(key: key);\n  _Home createState() => _Home();\n}\n\nclass _Home extends State<Home>{\n  CameraController controller =\n  CameraController(cameras[1], ResolutionPreset.max);\n  //final VideoHomeController controller= Get.put(VideoHomeController());\n  late final YoutubePlayerController _controller;\n\n  @override\n  void initState() {\n    super.initState();\n    controller.initialize().then((_) {\n      if (!mounted) {\n        return;\n      }\n      setState(() {});\n    });\n    _controller = YoutubePlayerController(\n      initialVideoId: '',\n      flags: YoutubePlayerFlags(\n        autoPlay: false,\n        loop: false,\n        hideThumbnail: false,\n        //isLive: true,\n\n        controlsVisibleAtStart: false,\n\n        useHybridComposition: false,\n      ),\n    );\n\n  }\n\n\n  @override\n\n  @override\n  void dispose() {\n    _controller.pause();\n    controller.dispose();\n    super.dispose();\n  }\n\n\n  @override\n  Widget build(BuildContext context){\n\n    //Get.find<YoutubeDetailController>();\n    var height2 = AppBar().preferredSize.height;\n    if (!controller.value.isInitialized) {\n      return Container();\n    }\n\n    return SafeArea(\n\n...\n\n  body: Stack(\n\n            children: [\n              CameraPreview(controller),\n              //\xec\x83\x81\xeb\x8b\xa8 \xec\x8a\xac\xeb\x9d\xbc\xec\x9d\xb4\xeb\x93\x9c\n          Column(\n...\n
Run Code Online (Sandbox Code Playgroud)\n

这是控制台中的日志

\n
W/MessageQueue(20594):  at android.os.Handler.sendMessageDelayed(Handler.java:697)\nW/MessageQueue(20594):  at android.os.Handler.post(Handler.java:427)\nW/MessageQueue(20594):  at android.hardware.camera2.impl.CameraDeviceImpl$CameraHandlerExecutor.execute(CameraDeviceImpl.java:2163)\nW/MessageQueue(20594):  at android.hardware.camera2.impl.CameraDeviceImpl$CameraDeviceCallbacks.onResultReceived(CameraDeviceImpl.java:2071)\nW/MessageQueue(20594):  at android.hardware.camera2.ICameraDeviceCallbacks$Stub.onTransact(ICameraDeviceCallbacks.java:182)\nW/MessageQueue(20594):  at android.os.Binder.execTransactInternal(Binder.java:1195)\nW/MessageQueue(20594):  at android.os.Binder.execTransact(Binder.java:1159)\nW/MessageQueue(20594): Handler (android.os.Handler) {277b89c} sending message to a Handler on a dead thread\nW/MessageQueue(20594): java.lang.IllegalStateException: Handler (android.os.Handler) {277b89c} sending message to a Handler on a dead thread\n
Run Code Online (Sandbox Code Playgroud)\n

fzy*_*cjy 1

首先,当应用程序不在前台时处理相机,并在应用程序再次进入前台时重新创建相机内容。(您可以使用来检测)由于该错误似乎是由应用程序在后台时与活动相机相关的事物引起的。

其次,如果你对这个警告感到好奇,可能是由以下原因引起的:

主要原因是您将一条消息放入没有循环程序循环的队列中。参考

如果您没有 Android 背景并且不了解什么是 Looper,请不要担心;)无论如何,这听起来不是一个大问题,即应用程序不会崩溃。但我怀疑是否会出现一些内存泄漏或CPU浪费等问题。无论如何,按照上面的“首先”部分,你不应该再看到警告。