Getx: Get.to can only be executed once

Created on 27 Sep 2020  ยท  1Comment  ยท  Source: jonataslaw/getx

Get.to can only be executed once.

import 'package:flutter/material.dart';
import 'package:get/get.dart';

void main() {
  runApp(App());
}

class App extends StatelessWidget {
  final routes = [];

  @override
  Widget build(BuildContext context) {
    return GetMaterialApp(initialRoute: '/', getPages: [
      GetPage(name: "/", page: () => A()),
      GetPage(name: "/b", page: () => B()),
    ]);
  }
}

class A extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return Scaffold(
      floatingActionButton: FloatingActionButton(
        child: Text('a'),
        onPressed: showBottomSheet,
      ),
    );
  }
}

class B extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return Scaffold(
      floatingActionButton: FloatingActionButton(
        child: Text('b'),
        onPressed: () {
          Get.back(result: '123');
        },
      ),
    );
  }
}

showBottomSheet() {
  print('a open bottomSheet');
  Get.bottomSheet(Container(
    color: Colors.white,
    child: Wrap(
      children: [
        ListTile(
          title: Text('#1    Get.to'),
          onTap: () {
            print('onTap #1');
            Get.to(B()).then((value) => print('B -> A(#1): $value'));
          },
        ),
        ListTile(
          title: Text('#2    Navigator.push'),
          onTap: () {
            print('onTap #2');
            Navigator.push(
              Get.context,
              MaterialPageRoute(builder: (context) => B()),
            ).then((value) => print('B -> A(#2): $value'));
          },
        ),
      ],
    ),
  ));
}
$ flutter run -d chrome
Launching lib/main.dart on Chrome in debug mode...
Syncing files to device Chrome...                                       
14,362ms (!)                                       
Debug service listening on ws://127.0.0.1:42893/WbB9rlTKbSU=

Warning: Flutter's support for web development is not stable yet and hasn't
been thoroughly tested in production environments.
For more information see https://flutter.dev/web

๐Ÿ”ฅ  To hot restart changes while running, press "r" or "R".
For a more detailed help message, press "h". To quit, press "q".
a open bottomSheet
onTap #1
B -> A(#1): 123
onTap #1
โ•โ•โ•ก EXCEPTION CAUGHT BY GESTURE โ•žโ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•
The following JSNoSuchMethodError was thrown while handling a gesture:
NoSuchMethodError: invalid member on null: 'then'

When the exception was thrown, this was the stack:
packages/xxx/main.dart 56:20                          <fn>
packages/flutter/src/material/ink_well.dart 993:19    [_handleTap]
packages/flutter/src/material/ink_well.dart 1111:38   <fn>
packages/flutter/src/gestures/recognizer.dart 183:24  invokeCallback
packages/flutter/src/gestures/tap.dart 598:11         handleTapUp
packages/flutter/src/gestures/tap.dart 287:5          [_checkUp]
packages/flutter/src/gestures/tap.dart 259:7          acceptGesture
packages/flutter/src/gestures/arena.dart 157:12       sweep
packages/flutter/src/gestures/binding.dart 362:20     handleEvent
packages/flutter/src/gestures/binding.dart 338:14     dispatchEvent
packages/flutter/src/rendering/binding.dart 267:11    dispatchEvent
packages/flutter/src/gestures/binding.dart 295:7      [_handlePointerEvent]
packages/flutter/src/gestures/binding.dart 240:7      [_flushPointerEventQueue]
packages/flutter/src/gestures/binding.dart 213:7      [_handlePointerDataPacket]
lib/_engine/engine/window.dart 773:13                 _invoke1
lib/_engine/engine/window.dart 374:5                  invokeOnPointerDataPacket
lib/_engine/engine/pointer_binding.dart 129:14        [_onPointerData]
lib/_engine/engine/pointer_binding.dart 479:16        <fn>
lib/_engine/engine/pointer_binding.dart 440:21        <fn>
lib/_engine/engine/pointer_binding.dart 210:16        <fn>

Handler: "onTap"
Recognizer:
  TapGestureRecognizer#c6d63
โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•
onTap #1
Another exception was thrown: NoSuchMethodError: invalid member on null: 'then'
onTap #1
Another exception was thrown: NoSuchMethodError: invalid member on null: 'then'
onTap #1
Another exception was thrown: NoSuchMethodError: invalid member on null: 'then'
onTap #2
B -> A(#2): 123
onTap #2
B -> A(#2): 123
onTap #2
B -> A(#2): 123

expected behavior

Most helpful comment

Get.to(Page(),preventDuplicates:false);

>All comments

Get.to(Page(),preventDuplicates:false);

Was this page helpful?
0 / 5 - 0 ratings