当前位置:   article > 正文

Flutter 不用Scaffold.of(context)来显示SnackBar,直接用GlobalKey来访问_flutter开发 scaffold.of(context)弃用

flutter开发 scaffold.of(context)弃用

由于Flutter 的SnackBar必须依赖于Scaffold.of(context),而要访问正确的context,必须要严格的套层级或者传参context,这样会有一些弊端,在一个函数内套过多层级会让代码维护非常困难,传参对于多个回调事件call也很麻烦,这时可以采用GlobalKey来直接访问,而不用Scaffold.of(context)。

 

  1. import 'package:flutter/material.dart';
  2. void main() => runApp(MyApp());
  3. class MyApp extends StatelessWidget {
  4. @override
  5. Widget build(BuildContext context) {
  6. return MaterialApp(
  7. title: 'Flutter Demo',
  8. theme: ThemeData(
  9. primarySwatch: Colors.blue,
  10. ),
  11. home: HomePage(),
  12. );
  13. }
  14. }
  15. class HomePage extends StatelessWidget {
  16. final _scaffoldKey = GlobalKey<ScaffoldState>();
  17. @override
  18. Widget build(BuildContext context) {
  19. return Scaffold(
  20. key: _scaffoldKey,
  21. appBar: AppBar(
  22. title: Text('SnackBar Demo'),
  23. ),
  24. body: Center(
  25. child: RaisedButton(
  26. color: Colors.pink,
  27. textColor: Colors.white,
  28. onPressed: _displaySnackBar(context),
  29. child: Text('Display SnackBar'),
  30. ),
  31. ),
  32. );
  33. }
  34. _displaySnackBar(BuildContext context) {
  35. _scaffoldKey.currentState.showSnackBar(
  36. SnackBar(
  37. content: Text('Are you talkin\' to me?'),
  38. ),
  39. );
  40. }
  41. }
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/小小林熬夜学编程/article/detail/282510
推荐阅读
相关标签
  

闽ICP备14008679号