Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import 'package:flutter/cupertino.dart';
- import 'package:flutter/material.dart';
- import 'package:provider/provider.dart';
- void main() => runApp(MyApp());
- class MyApp extends StatelessWidget {
- @override
- Widget build(BuildContext context) {
- return MaterialApp(
- title: 'Flutter Demo',
- theme: ThemeData(
- primarySwatch: Colors.blue,
- ),
- home: ChangeNotifierProvider<UserModel>(
- create: (_) => UserModel(),
- child: Consumer<UserModel>(
- builder: (buildContext, model, _) {
- if (model.username == null) {
- return LoginPage();
- } else {
- return HomePage();
- }
- },
- ),
- ),
- );
- }
- }
- class HomePage extends StatelessWidget {
- @override
- Widget build(BuildContext context) {
- final provider = Provider.of<UserModel>(context, listen: false);
- return Scaffold(
- appBar: AppBar(
- title: Text('Homepage'),
- ),
- body: Container(
- child: Center(
- child: Column(
- children: <Widget>[
- SizedBox(
- height: 32.0,
- ),
- Text('Logged in as ' + provider.username),
- FlatButton(
- color: Color(0xFFDDDDDD),
- child: Text('Logout'),
- onPressed: () {
- provider.update(null);
- },
- ),
- ],
- ),
- ),
- ),
- );
- }
- }
- class LoginPage extends StatelessWidget {
- @override
- Widget build(BuildContext context) {
- final provider = Provider.of<UserModel>(context, listen: false);
- return Scaffold(
- appBar: AppBar(
- title: Text('Login'),
- ),
- body: Center(
- child: Column(
- children: <Widget>[
- SizedBox(
- height: 32.0,
- ),
- Text('Please login'),
- FlatButton(
- color: Color(0xFFDDDDDD),
- child: Text('Login'),
- onPressed: () {
- provider.update('newUser');
- },
- ),
- ],
- ),
- ),
- );
- }
- }
- class UserModel extends ChangeNotifier {
- String username;
- void update(String newValue) {
- username = newValue;
- notifyListeners();
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement