颤振小部件中的静态变量,坏主意?
Posted
技术标签:
【中文标题】颤振小部件中的静态变量,坏主意?【英文标题】:Static variables in flutter widgets, bad idea? 【发布时间】:2020-02-27 01:16:59 【问题描述】:在颤振小部件中制作静态变量是个坏主意吗? 例如,如果我有一个带有脚手架的***有状态小部件,并且我将 globalKey 传递给脚手架,如下所示:
class DemoScreen extends StatefulWidget
createState() => DemoScreenState();
class DemoScreenState extends State<DemoScreen>
final scaffoldKey = GlobalKey<ScaffoldState>();
@override
Widget build(BuildContext context)
return Scaffold(
key: scaffoldKey,
body: Builder(
builder: (BuildContext context)
return ...
我想在树中较低的小部件中访问该键,我可以创建这个final scaffoldKey
static
并使用DemoScreenState.scaffoldKey
访问这个键吗?或者这是一个坏主意?为什么?
为什么还要在DemoScreenState
而不是DemoScreen
中定义最终变量?不使用widget.scaffoldKey
只是为了让您的代码更具可读性吗?
【问题讨论】:
是的。这是个坏主意。您应该改用 Inheritedwidget,例如 provider 是什么原因?仅仅为了使用scaffoldstate可以吗? 【参考方案1】:1 - DemoScreenState 应该像这样 _DemoScreenState 是私有的
2 - 仅当您想从另一个小部件访问 GlobalKeyScaffoldState>() 是的,将其放入演示屏幕并使其成为静态变量并使用 widget.ScaffoldKey。
3 - 你想在代码中做的所有事情,只要想想是什么让代码易于阅读、更灵活、性能更好
希望我的评论对你有帮助
【讨论】:
以上是关于颤振小部件中的静态变量,坏主意?的主要内容,如果未能解决你的问题,请参考以下文章