Skip to content

Instantly share code, notes, and snippets.

@iamEtornam
Last active October 22, 2020 18:02
Show Gist options
  • Save iamEtornam/2ee6c62ecd43daf175064d364b4b3e61 to your computer and use it in GitHub Desktop.
Save iamEtornam/2ee6c62ecd43daf175064d364b4b3e61 to your computer and use it in GitHub Desktop.
Generate dynamic initial route in Flutter
import 'package:flutter/material.dart';
final Color darkBlue = Color.fromARGB(255, 18, 32, 47);
void main() {
runApp(MyApp());
}
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return StreamBuilder(
stream: null, //SOME FUNCTION HERE
builder: (context, snapshot) {
if (!snapshot.hasData) {
return Material(
child: Center(child: CircularProgressIndicator()),
);
}
return MaterialApp(
title: 'App',
themeMode: ThemeMode.system,
debugShowCheckedModeBanner: false,
onGenerateInitialRoutes: (_) {
if (snapshot.data) {
return <Route>[
MaterialPageRoute(builder: (context) => HomePage())
];
} else {
return <Route>[
MaterialPageRoute(builder: (context) => IntroPage())
];
}
},
onGenerateRoute: Routes.generateRoute,
localeResolutionCallback:
(Locale locale, Iterable<Locale> supportedLocales) {
return locale;
},
);
});
}
}
class HomePage extends StatelessWidget {
@override
Widget build(BuildContext context) {
return Text('Hello, World! Home', style: Theme.of(context).textTheme.headline4);
}
}
class IntroPage extends StatelessWidget {
@override
Widget build(BuildContext context) {
return Text('Hello, World! Intro', style: Theme.of(context).textTheme.headline4);
}
}
//Route generator (Navigation Route 1.0)
class Routes {
static Route<dynamic> generateRoute(RouteSettings settings) {
switch (settings.name) {
case '/':
return MaterialPageRoute(builder: (_) => IntroPage());
case '/homePage':
return MaterialPageRoute(builder: (_) => HomePage());
default:
return MaterialPageRoute(
builder: (_) => Scaffold(
body: Center(
child: Text('No route defined for ${settings.name}')),
));
}
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment