Flutter Web中的错误消息未正确显示(在3.10.6和3.22.2版本中都存在此问题)

0vvn1miw  于 2个月前  发布在  Flutter
关注(0)|答案(9)|浏览(51)

重现步骤

  1. 在Flutter Web和Android上运行提供的代码示例
  2. 点击按钮触发错误
  3. 检查错误日志

描述:

我遇到了一个问题,即在Flutter Web中错误消息不再正确显示。最初,在使用Flutter版本3.10.6时,错误消息可以正确显示。然而,它们突然停止显示,没有任何对代码的更改。我升级到最新版本3.22.2,但问题仍然存在。错误消息在Android上仍然可以正确显示。

预期结果

Web应用程序中的错误消息应与初始版本3.10.6中的错误消息一样正确显示。

实际结果

Web应用程序中的错误消息在Flutter版本3.10.6和3.22.2中以不同的方式显示。这个问题不影响在Android上正确显示错误消息的版本。

代码示例

代码示例

Future<void> main() async {
  runApp(MaterialApp(
    initialRoute: "/",
    routes: {
      "/": (context) => const Home(),
    },
  ));
}

class Home extends StatefulWidget {
  const Home({super.key});

  @override
  State<Home> createState() => _HomeState();
}

class _HomeState extends State<Home> {

  String? nullableString;

  void _triggerError() {
    // This will cause a "Null check operator used on a null value" error
    String nonNullableString = nullableString!;
    print(nonNullableString);
  }

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: const Text('Flutter Null Check Error Demo'),
      ),
      body: Center(
        child: ElevatedButton(
          onPressed: _triggerError,
          child: const Text('Trigger Error'),
        ),
      ),
    );
  }
}

截图或视频

截图/视频演示
[上传媒体在这里]

日志

日志

Android

The following _TypeError was thrown while handling a gesture:
Null check operator used on a null value

When the exception was thrown, this was the stack: 
#0      _HomeState._triggerError (package:design_studio/main_billdesk.dart:61:46)
#1      _InkResponseState.handleTap (package:flutter/src/material/ink_well.dart:1171:21)
#2      GestureRecognizer.invokeCallback (package:flutter/src/gestures/recognizer.dart:344:24)
#3      TapGestureRecognizer.handleTapUp (package:flutter/src/gestures/tap.dart:652:11)
#4      BaseTapGestureRecognizer._checkUp (package:flutter/src/gestures/tap.dart:309:5)
#5      BaseTapGestureRecognizer.handlePrimaryPointer (package:flutter/src/gestures/tap.dart:242:7)
#6      PrimaryPointerGestureRecognizer.handleEvent (package:flutter/src/gestures/recognizer.dart:696:9)
#7      PointerRouter._dispatch (package:flutter/src/gestures/pointer_router.dart:98:12)
#8      PointerRouter._dispatchEventToRoutes.<anonymous closure> (package:flutter/src/gestures/pointer_router.dart:143:9)
#9      _LinkedHashMapMixin.forEach (dart:collection-patch/compact_hash.dart:633:13)
#10     PointerRouter._dispatchEventToRoutes (package:flutter/src/gestures/pointer_router.dart:141:18)
#11     PointerRouter.route (package:flutter/src/gestures/pointer_router.dart:127:7)
#12     GestureBinding.handleEvent (package:flutter/src/gestures/binding.dart:495:19)
#13     GestureBinding.dispatchEvent (package:flutter/src/gestures/binding.dart:475:22)
#14     RendererBinding.dispatchEvent (package:flutter/src/rendering/binding.dart:425:11)
#15     GestureBinding._handlePointerEventImmediately (package:flutter/src/gestures/binding.dart:420:7)
#16     GestureBinding.handlePointerEvent (package:flutter/src/gestures/binding.dart:383:5)
#17     GestureBinding._flushPointerEventQueue (package:flutter/src/gestures/binding.dart:330:7)
#18     GestureBinding._handlePointerDataPacket (package:flutter/src/gestures/binding.dart:299:9)
#19     _invoke1 (dart:ui/hooks.dart:328:13)
#20     PlatformDispatcher._dispatchPointerDataPacket (dart:ui/platform_dispatcher.dart:442:7)
#21     _dispatchPointerDataPacket (dart:ui/hooks.dart:262:31)
Handler: "onTap"
Recognizer: TapGestureRecognizer#8cc5e
debugOwner: GestureDetector
state: possible
won arena
finalPosition: Offset(203.9, 454.6)
finalLocalPosition: Offset(84.0, 28.7)
button: 1
sent tap down

Web

The following TypeErrorImpl was thrown while handling a gesture:
Unexpected null value.

When the exception was thrown, this was the stack: 
dart-sdk/lib/_internal/js_dev_runtime/private/ddc_runtime/errors.dart 296:3       throw_
dart-sdk/lib/_internal/js_dev_runtime/private/ddc_runtime/operations.dart 586:18  nullCheck
packages/design_studio/main_billdesk.dart 61:46                                   [_triggerError]
packages/flutter/src/material/ink_well.dart 1171:21                               handleTap
packages/flutter/src/gestures/recognizer.dart 344:24                              invokeCallback
packages/flutter/src/gestures/tap.dart 652:11                                     handleTapUp
packages/flutter/src/gestures/tap.dart 309:5                                      [_checkUp]
packages/flutter/src/gestures/tap.dart 242:7                                      handlePrimaryPointer
packages/flutter/src/gestures/recognizer.dart 696:9                               handleEvent
packages/flutter/src/gestures/pointer_router.dart 98:7                            [_dispatch]
packages/flutter/src/gestures/pointer_router.dart 143:9                           <fn>
dart-sdk/lib/_internal/js_dev_runtime/private/linked_hash_map.dart 21:7           forEach
packages/flutter/src/gestures/pointer_router.dart 141:17                          [_dispatchEventToRoutes]
packages/flutter/src/gestures/pointer_router.dart 127:7                           route
packages/flutter/src/gestures/binding.dart 495:5                                  handleEvent
packages/flutter/src/gestures/binding.dart 475:14                                 dispatchEvent
packages/flutter/src/rendering/binding.dart 425:11                                dispatchEvent
packages/flutter/src/gestures/binding.dart 420:7                                  [_handlePointerEventImmediately]
packages/flutter/src/gestures/binding.dart 383:5                                  handlePointerEvent
packages/flutter/src/gestures/binding.dart 330:7                                  [_flushPointerEventQueue]
packages/flutter/src/gestures/binding.dart 299:9                                  [_handlePointerDataPacket]
lib/_engine/engine/platform_dispatcher.dart 1419:5                                invoke1
lib/_engine/engine/platform_dispatcher.dart 333:5                                 invokeOnPointerDataPacket
lib/_engine/engine/pointer_binding.dart 398:30                                    [_sendToFramework]
lib/_engine/engine/pointer_binding.dart 224:7                                     onPointerData
lib/_engine/engine/pointer_binding.dart 1001:20                                   <fn>
lib/_engine/engine/pointer_binding.dart 930:7                                     <fn>
lib/_engine/engine/pointer_binding.dart 531:9                                     loggedHandler
dart-sdk/lib/_internal/js_dev_runtime/private/ddc_runtime/operations.dart 426:37  _checkAndCall
dart-sdk/lib/_internal/js_dev_runtime/private/ddc_runtime/operations.dart 431:39  dcall
Handler: "onTap"
Recognizer: TapGestureRecognizer#d525f
debugOwner: GestureDetector
state: possible
won arena
finalPosition: Offset(930.0, 504.0)
finalLocalPosition: Offset(33.3, 19.5)
button: 1
sent tap down

Flutter Doctor输出

Doctor输出

3.10.6

[√] Flutter (Channel stable, 3.10.6, on Microsoft Windows [Version 10.0.22621.3593], locale en-IN)
• Flutter version 3.10.6 on channel stable at C:\src\flutter
• Upstream repository https://github.com/flutter/flutter.git
• Framework revision f468f3366c (11 months ago), 2023-07-12 15:19:05 -0700
• Engine revision cdbeda788a
• Dart version 3.0.6
• DevTools version 2.23.1

[√] Windows Version (Installed version of Windows is version 10 or higher)

[√] Android toolchain - develop for Android devices (Android SDK version 33.0.1)
• Android SDK at C:\Users\Admin\AppData\Local\Android\sdk
• Platform android-34, build-tools 33.0.1
• Java binary at: C:\Program Files\Android\Android Studio\jbr\bin\java
• Java version OpenJDK Runtime Environment (build 17.0.6+0-b2043.56-9586694)
• All Android licenses accepted.

[√] Chrome - develop for the web
• Chrome at C:\Program Files\Google\Chrome\Application\chrome.exe

[√] Visual Studio - develop for Windows (Visual Studio Community 2022 17.9.1)
• Visual Studio at C:\Program Files\Microsoft Visual Studio\2022\Community
• Visual Studio Community 2022 version 17.9.34616.47
• Windows 10 SDK version 10.0.22621.0

[√] Android Studio (version 2022.2)
• Android Studio at C:\Program Files\Android\Android Studio
• Flutter plugin can be installed from:
[√] Connected device (4 available)
• CPH2467 (mobile)  • 1a715d74 • android-arm64  • Android 14 (API 34)
• Windows (desktop) • windows  • windows-x64    • Microsoft Windows [Version 10.0.22621.3593]
• Chrome (web)      • chrome   • web-javascript • Google Chrome 126.0.6478.61
• Edge (web)        • edge     • web-javascript • Microsoft Edge 126.0.2592.56

[√] Network resources
• All expected network resources are available.

• No issues found!

3.22.2

[√] Flutter (Channel stable, 3.22.2, on Microsoft Windows [Version 10.0.22621.3593], locale en-IN)
• Flutter version 3.22.2 on channel stable at C:\Users\Admin\fvm\versions\3.22.2
• Upstream repository https://github.com/flutter/flutter.git
• Framework revision 761747bfc5 (12 days ago), 2024-06-05 22:15:13 +0200
• Engine revision edd8546116
• Dart version 3.4.3
• DevTools version 2.34.3

[√] Windows Version (Installed version of Windows is version 10 or higher)

[√] Android toolchain - develop for Android devices (Android SDK version 33.0.1)
• Android SDK at C:\Users\Admin\AppData\Local\Android\sdk
• Platform android-34, build-tools 33.0.1
• Java binary at: C:\Program Files\Android\Android Studio\jbr\bin\java
• Java version OpenJDK Runtime Environment (build 17.0.6+0-b2043.56-9586694)
• All Android licenses accepted.

[√] Chrome - develop for the web
• Chrome at C:\Program Files\Google\Chrome\Application\chrome.exe

[√] Visual Studio - develop Windows apps (Visual Studio Community 2022 17.9.1)
• Visual Studio at C:\Program Files\Microsoft Visual Studio\2022\Community
• Visual Studio Community 2022 version 17.9.34616.47
• Windows 10 SDK version 10.0.22621.0

[√] Android Studio (version 2022.2)
• Android Studio at C:\Program Files\Android\Android Studio
• Flutter plugin can be installed from:
https://plugins.jetbrains.com/plugin/9212-flutter
• Dart plugin can be installed from:
https://plugins.jetbrains.com/plugin/6351-dart
• Java version OpenJDK Runtime Environment (build 17.0.6+0-b2043.56-9586694)

[√] VS Code (version 1.89.1)
• VS Code at C:\Users\Admin\AppData\Local\Programs\Microsoft VS Code
• Flutter extension version 3.90.0

[√] Connected device (4 available)
• CPH2467 (mobile)  • 1a715d74 • android-arm64  • Android 14 (API 34)
• Windows (desktop) • windows  • windows-x64    • Microsoft Windows [Version 10.0.22621.3593]
• Chrome (web)      • chrome   • web-javascript • Google Chrome 126.0.6478.61
• Edge (web)        • edge     • web-javascript • Microsoft Edge 126.0.2592.56

[√] Network resources
• All expected network resources are available.

• No issues found!
2w3kk1z5

2w3kk1z51#

@KaushikGupta007
您希望在web中看到的预期控制台日志或行为是什么?目前web显示异常的方式似乎与android同步,例如:

[_triggerError]
packages/flutter/src/material/ink_well.dart 1171:21                               handleTap
packages/flutter/src/gestures/recognizer.dart 344:24                              invokeCallback
packages/flutter/src/gestures/tap.dart 652:11                                     handleTapUp
packages/flutter/src/gestures/tap.dart 309:5                                      [_checkUp]
packages/flutter/src/gestures/tap.dart 242:7                                      handlePrimaryPointer
packages/flutter/src/gestures/recognizer.dart 696:9                               handleEvent
packages/flutter/src/gestures/pointer_router.dart 98:7                            [_dispatch]
packages/flutter/src/gestures/pointer_router.dart 143:9                           <fn>
dart-sdk/lib/_internal/js_dev_runtime/private/linked_hash_map.dart 21:7           forEach
packages/flutter/src/gestures/pointer_router.dart 141:17                          [_dispatchEventToRoutes]

如果您仔细观察,类名与在android中抛出的相同。

zqdjd7g9

zqdjd7g93#

Facing similar issue
I recently updated to 3.22.2, since then i stopped getting details of any error. Just shows 'Error'.

jvidinwx

jvidinwx4#

我得到了最新稳定版本的以下内容:

══╡ EXCEPTION CAUGHT BY GESTURE ╞═══════════════════════════════════════════════════════════════════
The following TypeErrorImpl was thrown while handling a gesture:
Unexpected null value.

When the exception was thrown, this was the stack:
dart-sdk/lib/_internal/js_dev_runtime/private/ddc_runtime/errors.dart 296:3       throw_
dart-sdk/lib/_internal/js_dev_runtime/private/ddc_runtime/operations.dart 586:18  nullCheck
sxissh06

sxissh065#

我最近更新到了3.22.2版本,从那时起我就不再收到任何错误的详细信息了。只显示“错误”。

是的,我也遇到了同样的问题。遗憾的是,这就是升级的结果。根据Flutter的经验法则,每发布一个新稳定版本,就会有一个新的不稳定版本出现。
我也尝试过3.16.9和3.19.3版本。

g0czyy6m

g0czyy6m6#

我最近更新到了3.22.2版本,从那以后我就不再收到任何错误的详细信息了。只显示“错误”。

是的,我也遇到了同样的问题。遗憾的是,这就是升级后的结果。根据Flutter的经验法则,每发布一个新稳定版本,就会有一个新的不稳定版本出现。
我还尝试了3.16.9和3.19.3版本,但在运行Web时仍然显示“错误”,而在Android上运行时却能显示正确的消息。

oiopk7p5

oiopk7p57#

我在最新的稳定版本(3.22.3)和主分支上运行时遇到了以下问题:

══╡ EXCEPTION CAUGHT BY GESTURE ╞═══════════════════════════════════════════════════════════════════
The following TypeErrorImpl was thrown while handling a gesture:
Unexpected null value.

When the exception was thrown, this was the stack:

这不是唯一的术语,所以我想我们现在看到的异常是意料之中的?

yvgpqqbh

yvgpqqbh8#

由于Flutter在不同平台(Android和Web)处理异常和堆栈跟踪的方式不同,因此出现了不同的错误。然而,根本问题是相同的:在一个空值上使用了空值检查操作符(!)。

wd2eg0qa

wd2eg0qa9#

感谢您的更新。根据报告和行为,我将保持这个问题对团队的关注/跟踪。

相关问题