Skip to content

Instantly share code, notes, and snippets.

@hectorAguero
Last active June 25, 2021 02:04
Show Gist options
  • Save hectorAguero/74fc6f34f6ad025ae0676d5ecaccffa0 to your computer and use it in GitHub Desktop.
Save hectorAguero/74fc6f34f6ad025ae0676d5ecaccffa0 to your computer and use it in GitHub Desktop.
Simple Flutter token cache Validation
import 'package:flutter/material.dart';
void main() {
runApp(MyApp());
}
class MyApp extends StatefulWidget {
@override
State<MyApp> createState() => _MyAppState();
}
class _MyAppState extends State<MyApp> {
late Future<bool> _myFuture;
@override
void initState() {
super.initState();
_myFuture = _validateToken();
}
Future<bool> _validateToken() async {
// SharedPreferences prefs = await SharedPreferences.getInstance();
// final token = prefs.getString('userToken');
final String? token =
await Future.delayed(const Duration(seconds: 2), () => 'userToken');
if (token != null) {
return true;
}
return false;
}
@override
Widget build(BuildContext context) {
return MaterialApp(
home: FutureBuilder<bool>(
future: _myFuture,
builder: (BuildContext context, AsyncSnapshot<bool> snapshot) {
if (snapshot.hasData) {
if (snapshot.data!) {
return const HomePage();
} else {
return const LoginPage();
}
}
return const LoadingPage();
},
),
);
}
}
class LoadingPage extends StatelessWidget {
const LoadingPage({Key? key}) : super(key: key);
@override
Widget build(BuildContext context) {
return const Scaffold(body: Center(child: CircularProgressIndicator()));
}
}
class LoginPage extends StatelessWidget {
const LoginPage({Key? key}) : super(key: key);
@override
Widget build(BuildContext context) {
return const Scaffold(body: Center(child: Text('Login Page')));
}
}
class HomePage extends StatelessWidget {
const HomePage({Key? key}) : super(key: key);
@override
Widget build(BuildContext context) {
return const Scaffold(body: Center(child: Text('Home Page')));
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment