If you wish to show the intro screen only for the first time, you will need to save locally that this user has already seen intro.
For such thing you may use Shared Preference. There is a flutter package Shared Preferences which you can use.
Please refer to the below complete tested code to understand how to use it:
import 'dart:async'; | |
import 'package:after_layout/after_layout.dart'; | |
import 'package:flutter/material.dart'; | |
import 'package:shared_preferences/shared_preferences.dart'; | |
void main() => runApp(new MyApp()); | |
class MyApp extends StatelessWidget { | |
@override | |
Widget build(BuildContext context) { | |
return new MaterialApp( | |
color: Colors.blue, | |
home: new Splash(), | |
); | |
} | |
} | |
class Splash extends StatefulWidget { | |
@override | |
SplashState createState() => new SplashState(); | |
} | |
class SplashState extends State<Splash> with AfterLayoutMixin<Splash> { | |
Future checkFirstSeen() async { | |
SharedPreferences prefs = await SharedPreferences.getInstance(); | |
bool _seen = (prefs.getBool('seen') ?? false); | |
if (_seen) { | |
Navigator.of(context).pushReplacement( | |
new MaterialPageRoute(builder: (context) => new Home())); | |
} else { | |
await prefs.setBool('seen', true); | |
Navigator.of(context).pushReplacement( | |
new MaterialPageRoute(builder: (context) => new IntroScreen())); | |
} | |
} | |
@override | |
void afterFirstLayout(BuildContext context) => checkFirstSeen(); | |
@override | |
Widget build(BuildContext context) { | |
return new Scaffold( | |
body: new Center( | |
child: new Text('Loading...'), | |
), | |
); | |
} | |
} | |
class Home extends StatelessWidget { | |
@override | |
Widget build(BuildContext context) { | |
return new Scaffold( | |
appBar: new AppBar( | |
title: new Text('Hello'), | |
), | |
body: new Center( | |
child: new Text('This is the second page'), | |
), | |
); | |
} | |
} | |
class IntroScreen extends StatelessWidget { | |
@override | |
Widget build(BuildContext context) { | |
return new Scaffold( | |
appBar: new AppBar( | |
title: new Text('IntroScreen'), | |
), | |
body: new Center( | |
child: new Text('This is the IntroScreen'), | |
), | |
); | |
} | |
} |
You will need to install the package after_layout .
Thatβs All.
Thanks for Reading.
Keep Coding.

With MotoShare.in, you can book a bike instantly, enjoy doorstep delivery, and ride without worries. Perfect for travelers, professionals, and adventure enthusiasts looking for a seamless mobility solution.