Skip to content

Using $Closure cannot return parameters #253

@thesnail

Description

@thesnail

I defined such a call in the hot update

@RuntimeOverride('#cpAboutPage')
Widget buildHotAboutPage(BuildContext context, Future<String> Function(String method, Map<String, dynamic> data) methodFunction) {
  return HotAboutPage(methodFunction: methodFunction);
}

In the main program, I use it this way

$Closure((Runtime runtime, $Value? target, List<$Value?> args) {
          if (args.isNotEmpty) {
            String? method = args[0]?.$reified;
            $Value? value1 = args.length > 1 ? args[1] : null;
            Map<String, dynamic> reified = {};
            if (value1?.$reified is Map) {
              reified = Map.from(value1?.$reified ?? {});
            }
            Completer<String> completer = Completer<String>();
            evalMethodShare(context, method: method ?? '', reified: reified).then((result) {
              print('========> result:$result');
              completer.complete('AAAA');
            }).catchError((error) {
              print('========> catchError:$error');
              completer.completeError(error);
            });
            return $Future.wrap(completer.future);
          } else {
            // return $Future.wrap(Future.value({}));
            return null;
          }
        })

But it keeps reporting errors

[ERROR:flutter/runtime/dart_vm_initializer.cc(40)] Unhandled Exception: dart_eval runtime exception: UnimplementedError
#0 EvalFunction.$value (package:dart_eval/src/eval/runtime/function.dart:41:25)
function.dart:41
#1 Unbox.run (package:dart_eval/src/eval/runtime/ops/primitives.dart:356:59)
primitives.dart:356
#2 Runtime.bridgeCall (package:dart_eval/src/eval/runtime/runtime.dart:831:12)
runtime.dart:831
at _HotAboutPageState.hotMethod()
at
at _HotAboutPageState.hotMethod()
at

RUNTIME STATE

Program offset: 4354
Stack sample: [L0: [L0: $State$bridge#29b3d, L1: Instance of '$BuildContext', L2: null], L1: 0, L2: $State$bridge#29b3d, L3: 0, L4: $State$bridge#29b3d, *L5: null, L6: null, L7: null, L8: null, L9: null]
Args sample: []
Call stack: [0, -1, -1]
TRACE:
4348: PushArg (L11)
4349: PushConstantInt (9)
4350: PushArg (L12)
4351: PushConstantInt (8)
4352: PushArg (L13)
4353: PushFunctionPtr (@4336)
4354: Unbox (L14) <<< EXCEPTION
4355: PushArg (L9)
4356: PushArg (L14)
4357: InvokeDynamic (L9.C24)

#0 Runtime.bridgeCall (package:dart_eval/src/eval/runtime/runtime.dart:839:7)
runtime.dart:839
#1 EvalFunctionPtr.call (package:dart_eval/src/eval/runtime/function.dart:61:13)
function.dart:61
#2 $GestureDetector.$new. (package:flutter_eval/src/widgets/gesture_detector.dart:307:45)
gesture_detector.dart:307
#3 GestureRecognizer.invokeCallback (package:flutter/src/gestures/recognizer.dart:345:24)
recognizer.dart:345
#4 TapGestureRecognizer.handleTapUp (package:flutter/src/gestures/tap.dart:737:11)
tap.dart:737
#5 BaseTapGestureRecognizer._checkUp (package:flutter/src/gestures/tap.dart:362:5)
tap.dart:362
#6 BaseTapGestureRecognizer.handlePrimaryPointer (package:flutter/src/gestures/tap.dart:293:7)
tap.dart:293
#7 PrimaryPointerGestureRecognizer.handleEvent (package:flutter/src/gestures/recognizer.dart:706:9)
recognizer.dart:706
#8 PointerRouter._dispatch (package:flutter/src/gestures/pointer_router.dart:97:12)
pointer_router.dart:97
#9 PointerRouter._dispatchEventToRoutes. (package:flutter/src/gestures/pointer_router.dart:143:9)
pointer_router.dart:143
#10 _LinkedHashMapMixin.forEach (dart:_compact_hash:764:13)
#11 PointerRouter._dispatchEventToRoutes (package:flutter/src/gestures/pointer_router.dart:141:18)
pointer_router.dart:141
#12 PointerRouter.route (package:flutter/src/gestures/pointer_router.dart:131:7)
pointer_router.dart:131
#13 GestureBinding.handleEvent (package:flutter/src/gestures/binding.dart:530:19)
binding.dart:530
#14 GestureBinding.dispatchEvent (package:flutter/src/gestures/binding.dart:499:22)
binding.dart:499
#15 RendererBinding.dispatchEvent (package:flutter/src/rendering/binding.dart:473:11)
binding.dart:473
#16 GestureBinding._handlePointerEventImmediately (package:flutter/src/gestures/binding.dart:437:7)
binding.dart:437
#17 GestureBinding.handlePointerEvent (package:flutter/src/gestures/binding.dart:394:5)
binding.dart:394
#18 GestureBinding._flushPointerEventQueue (package:flutter/src/gestures/binding.dart:341:7)
binding.dart:341
#19 GestureBinding._handlePointerDataPacket (package:flutter/src/gestures/binding.dart:308:9)
binding.dart:308
#20 _invoke1 (dart:ui/hooks.dart:347:13)
hooks.dart:347
#21 PlatformDispatcher._dispatchPointerDataPacket (dart:ui/platform_dispatcher.dart:467:7)
platform_dispatcher.dart:467
#22 _dispatchPointerDataPacket (dart:ui/hooks.dart:282:31)
hooks.dart:282

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions