-
-
Notifications
You must be signed in to change notification settings - Fork 124
Open
Description
I tried to add some basic implementation of onboarding using Beamer but i got into Duplicate key in the MaterialApp.router widget exception, the following is a simple demo:
import 'package:beamer/beamer.dart';
import 'package:flutter/material.dart';
void main() async {
WidgetsFlutterBinding.ensureInitialized();
Beamer.setPathUrlStrategy();
final hasSeenOnboarding = false; // This should come from Shared Preferences
final routerDelegate = BeamerDelegate(
initialPath: hasSeenOnboarding == false ? "/onboarding" : '/',
locationBuilder: RoutesLocationBuilder(
routes: {
'/onboarding': (context, state, data) => OnboardingScreen(),
'*': (context, state, data) => HomeScreen(),
},
).call,
);
runApp(
MaterialApp.router(
debugShowCheckedModeBanner: false,
routerDelegate: routerDelegate,
routeInformationParser: BeamerParser(),
backButtonDispatcher: BeamerBackButtonDispatcher(
delegate: routerDelegate,
),
),
);
}
class OnboardingScreen extends StatelessWidget {
const OnboardingScreen({
super.key,
});
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text("Onboarding Screen"),
),
body: Padding(
padding: const EdgeInsets.all(8.0),
child: Column(
children: [
Text('This is the onboarding screen'),
ElevatedButton(
onPressed: () async {
context.beamToReplacementNamed('/');
},
child: Text('Finish'),
),
],
),
),
);
}
}
class HomeScreen extends StatelessWidget {
const HomeScreen({
super.key,
});
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text("Home Screen"),
),
body: Padding(
padding: const EdgeInsets.all(8.0),
child: Column(
children: [
Text('This is the home screen'),
],
),
),
);
}
}
And this is the exception i got:
Exception has occurred.
DartError: Assertion failed: file:/Development/flutter/packages/flutter/lib/src/widgets/navigator.dart:4165:14
!pageKeyToOldEntry.containsKey(page.key)
is not true
dart-sdk/lib/_internal/js_dev_runtime/private/ddc_runtime/errors.dart 288:3 throw_
dart-sdk/lib/_internal/js_dev_runtime/private/profile.dart 110:39 assertFailed
packages/flutter/src/widgets/navigator.dart 4165:49 [_updatePages]
packages/flutter/src/widgets/navigator.dart 3944:7 didUpdateWidget
packages/flutter/src/widgets/framework.dart 5803:55 update
packages/flutter/src/widgets/framework.dart 3941:14 updateChild
packages/flutter/src/widgets/framework.dart 5656:16 performRebuild
packages/flutter/src/widgets/framework.dart 5347:7 rebuild
packages/flutter/src/widgets/framework.dart 5707:5 update
packages/flutter/src/widgets/framework.dart 3941:14 updateChild
packages/flutter/src/widgets/framework.dart 5656:16 performRebuild
packages/flutter/src/widgets/framework.dart 5347:7 rebuild
packages/flutter/src/widgets/framework.dart 5707:5 update
packages/flutter/src/widgets/framework.dart 3941:14 updateChild
packages/flutter/src/widgets/framework.dart 5656:16 performRebuild
packages/flutter/src/widgets/framework.dart 5347:7 rebuild
packages/flutter/src/widgets/framework.dart 5960:5 update
packages/flutter/src/widgets/framework.dart 3941:14 updateChild
packages/flutter/src/widgets/framework.dart 5656:16 performRebuild
packages/flutter/src/widgets/framework.dart 5347:7 rebuild
packages/flutter/src/widgets/framework.dart 5960:5 update
packages/flutter/src/widgets/framework.dart 3941:14 updateChild
packages/flutter/src/widgets/framework.dart 5656:16 performRebuild
packages/flutter/src/widgets/framework.dart 5794:11 performRebuild
packages/flutter/src/widgets/framework.dart 5347:7 rebuild
packages/flutter/src/widgets/framework.dart 2694:14 [_tryRebuild]
packages/flutter/src/widgets/framework.dart 2753:11 [_flushDirtyElements]
packages/flutter/src/widgets/framework.dart 3048:17 buildScope
packages/flutter/src/widgets/binding.dart 1176:9 drawFrame
packages/flutter/src/rendering/binding.dart 475:5 [_handlePersistentFrameCallback]
packages/flutter/src/scheduler/binding.dart 1397:7 [_invokeFrameCallback]
packages/flutter/src/scheduler/binding.dart 1318:9 handleDrawFrame
packages/flutter/src/scheduler/binding.dart 1176:5 [_handleDrawFrame]
lib/_engine/engine/platform_dispatcher.dart 1408:5 invoke
lib/_engine/engine/platform_dispatcher.dart 310:5 invokeOnDrawFrame
lib/_engine/engine/initialization.dart 187:36 <fn>
dart-sdk/lib/_internal/js_dev_runtime/patch/js_allow_interop_patch.dart 212:27 _callDartFunctionFast1
Reactions are currently unavailable
Metadata
Metadata
Assignees
Labels
No labels