Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import 'package:flutter/material.dart';
- import 'package:provider/provider.dart';
- void main() => runApp(MyApp());
- class MyApp extends StatelessWidget {
- @override
- Widget build(BuildContext context) {
- return ChangeNotifierProvider<AppState>(
- builder: (_) => AppState(),
- child: MaterialApp(
- title: 'Sandbox',
- home: Scaffold(
- body: Body(),
- ),
- ),
- );
- }
- }
- class AppState with ChangeNotifier {
- bool _isAwesome = true;
- bool get isAwesome => _isAwesome;
- String get awesomeText => _isAwesome ? "Totally awesome" : "Not so great";
- toggleAwesome() {
- _isAwesome = !_isAwesome;
- notifyListeners();
- }
- }
- class Body extends StatelessWidget {
- @override
- Widget build(BuildContext context) {
- return SafeArea(
- child: Center(
- child: Column(
- mainAxisAlignment: MainAxisAlignment.spaceEvenly,
- children: <Widget>[
- Text(Provider.of<AppState>(context).awesomeText),
- RaisedButton(
- child: Text("Toggle awesomeness"),
- onPressed: Provider.of<AppState>(context).toggleAwesome,
- ),
- RaisedButton(
- child: Text("Open bottom sheet"),
- onPressed: () {
- showBottomSheet(
- context: context, builder: (_) => BottomSheet());
- },
- )
- ],
- ),
- ),
- );
- }
- }
- class BottomSheet extends StatelessWidget {
- @override
- Widget build(BuildContext context) {
- return Container(
- color: Colors.grey,
- padding: EdgeInsets.all(38),
- alignment: Alignment.bottomCenter,
- height: 100,
- child: Text(Provider.of<AppState>(context).awesomeText),
- );
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement