Advertisement
Guest User

Untitled

a guest
Jul 17th, 2019
65
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.70 KB | None | 0 0
  1. import 'package:flutter/material.dart';
  2. import 'package:provider/provider.dart';
  3.  
  4. void main() => runApp(MyApp());
  5.  
  6. class MyApp extends StatelessWidget {
  7. @override
  8. Widget build(BuildContext context) {
  9. return ChangeNotifierProvider<AppState>(
  10. builder: (_) => AppState(),
  11. child: MaterialApp(
  12. title: 'Sandbox',
  13. home: Scaffold(
  14. body: Body(),
  15. ),
  16. ),
  17. );
  18. }
  19. }
  20.  
  21. class AppState with ChangeNotifier {
  22. bool _isAwesome = true;
  23.  
  24. bool get isAwesome => _isAwesome;
  25.  
  26. String get awesomeText => _isAwesome ? "Totally awesome" : "Not so great";
  27.  
  28. toggleAwesome() {
  29. _isAwesome = !_isAwesome;
  30. notifyListeners();
  31. }
  32. }
  33.  
  34. class Body extends StatelessWidget {
  35. @override
  36. Widget build(BuildContext context) {
  37. return SafeArea(
  38. child: Center(
  39. child: Column(
  40. mainAxisAlignment: MainAxisAlignment.spaceEvenly,
  41. children: <Widget>[
  42. Text(Provider.of<AppState>(context).awesomeText),
  43. RaisedButton(
  44. child: Text("Toggle awesomeness"),
  45. onPressed: Provider.of<AppState>(context).toggleAwesome,
  46. ),
  47. RaisedButton(
  48. child: Text("Open bottom sheet"),
  49. onPressed: () {
  50. showBottomSheet(
  51. context: context, builder: (_) => BottomSheet());
  52. },
  53. )
  54. ],
  55. ),
  56. ),
  57. );
  58. }
  59. }
  60.  
  61. class BottomSheet extends StatelessWidget {
  62. @override
  63. Widget build(BuildContext context) {
  64. return Container(
  65. color: Colors.grey,
  66. padding: EdgeInsets.all(38),
  67. alignment: Alignment.bottomCenter,
  68. height: 100,
  69. child: Text(Provider.of<AppState>(context).awesomeText),
  70. );
  71. }
  72. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement