我正在尝试创建一个统一的抽屉,该抽屉可在我的应用程序的所有页面中访问。如何使它在所有这些页面中持久存在,而不必在每个飞镖文件中重新创建自定义抽屉小部件?
有几种不同的选择。最基本的希望是您已经完成的事情,但是无论如何我都会列出它:
1:为您的抽屉创建一个类
您的小部件应该是其自己的有状态或无状态小部件。这样,您只需每次都实例化它。
class MyDrawer extends StatelessWidget {
@override
Widget build(BuildContext context) {
return Drawer(...);
}
}
然后在每个页面中使用它时:
Scaffold(
drawer: MyDrawer(...),
...
)
希望您已经这样做了;如果不是,你应该是。类的构建函数不应太大,否则会导致性能降低和难以维护代码;从长远来看,将事物分解为逻辑单元将对您有帮助。
2: 为脚手架创建一个类
如果必须为每个页面在支架中包含相同的抽屉仍然太多代码,则可以改用封装支架的类。本质上,它将为您实际使用的每个支架输入获取输入。
class MyScaffold extends StatelessWidget {
final Widget body;
MyScaffold({this.body});
@override
Widget build(BuildContext context) {
return Scaffold(
body: body,
drawer: MyDrawer(...),
);
}
}
然后,不要在代码中使用Scaffold,而要使用MyScaffold(但请使用更好的名称= D)。
3:多层脚手架
我只是将这种完成方式包括在内,我不建议这样做。话虽这么说,但在某些情况下,您无法通过flutter的正常工作流程来完成这些工作,例如,当用户点击抽屉中的不同项目时,是否需要自定义动画。
基本上,在这种情况下,您要做的是在MaterialApp或Navigator外部安装一个Scaffold(我相信这也意味着您必须在此之外另安装一个Navigator,但是我不确定100%)。您将在导航之外的支架上显示抽屉,而另一个支架(在导航内的每个页面上)将做您需要做的其他事情。有一些警告-
您必须确保获得正确的脚手架(即Scaffold.of(context)
,就其本身而言,它不会削减-
您必须获取第一个脚手架的上下文并使用它来找到更高级别的脚手架)
,您可能需要将GlobalKey(位于较低级别的脚手架中)传递给Drawer,以便它实际上可以更改其中的页面。
就像我说的那样,我不建议您使用这种方法,因此,我不会再详细介绍它,而是将其作为练习供读者阅读,如果他们想钻研那个兔子洞!
问题内容: 如果我们为特定的设置,java如何为它设置时间,例如,如果我们将其设置为时区,它怎么知道确切的时区,它在哪里维护? 提前致谢 问题答案: 时区数据源是特定于实现的,但是我相信大多数实现都使用IANA数据库(即zoneinfo,aka tz,aka Olson,aka TZDB)。 请注意,PST实际上不是时区-它是时区的“一部分”。时区为“太平洋时间”,通常以ID标识。
本文向大家介绍做好的页面都有在哪些浏览器上测过?相关面试题,主要包含被问及做好的页面都有在哪些浏览器上测过?时的应答技巧和注意事项,需要的朋友参考一下 这个要根据业务需求来做,如果是公司自用的后台管理系统,那么子需要测试Chrome就行了,如果要推广到用户使用,那么就需要根据市场需要测试浏览器,常见的Chrome、Firefox、QQ浏览器、360安全浏览器、IE浏览器、360极速浏览器、UC浏览
问题内容: 我正在使用SQL Server 2005/2008。我需要向表中添加一列(如果尚不存在)。这将应用于给定数据库中的所有表。我希望我能早一点,但与此解决方案有关。 如何才能做到这一点? 这是我所拥有的: 但是我得到了错误: 错误102:“ @ tblname”附近的语法不正确。’CreatedOn’附近的语法不正确。“ @tblname”附近的语法不正确。’CreatedOn’附近的语法
问题内容: 对于我的要求之一,我必须创建N个工作程序例程,该例程将由一个监视程序监视。所有工作程序完成后,监视程序必须结束。我的代码以死锁结尾,请帮忙。 问题答案: 您的monitorWorker永不死。当所有工作人员完成时,它将继续等待cs。这将导致死锁,因为其他任何东西都不会继续发送给CS,因此wg永远不会达到0。一种可能的解决方法是,当所有工作程序完成时,让监视器关闭通道。如果for循环在m
问题内容: 我想知道是否有可能“钩住”每个AJAX请求(即将发送或发生事件)并执行操作。此时,我假设页面上还有其他第三方脚本。其中一些可能使用jQuery,而其他一些则没有。这可能吗? 问题答案: 我不确定 脚本中的注释 是否有用 ,当然 仅适用于使用本机XMLHttpRequest对象的浏览器 。 我认为如果正在使用javascript库,它将起作用,因为如果可能的话,它们将使用本机对象。
问题内容: 一旦有了范围,我们就可以导航到其根目录并探索范围层次结构。 但是,是否可以直接找到页面上的所有范围? 同样,给定一个HTML元素,是否有直接方法可以找到其封闭范围? 问题答案: 您可以使用此CSS选择器查看页面上的所有范围 以及所有绑定: 然后,您可以通过将DOM元素转换为选择器来检索它们 然后使用选择器检索示波器/控制器/进样器
我有一组数据帧,其中一列包含一个分类变量。我想把它转换成几个虚拟变量,在这种情况下,我通常使用。 发生的事情是,查看每个数据帧中可用的数据,找出有多少类别,从而创建适当数量的虚拟变量。然而,在我现在研究的问题中,我实际上提前知道了可能的类别。但当单独查看每个数据帧时,并不一定会出现所有类别。 我的问题是:有没有一种方法可以传递给(或等效函数)类别的名称,以便对于给定数据帧中没有出现的类别,它只创建
我从Wicket开始,正在做TDD(当然是使用WicketTester) 我在尝试使用标记继承创建公共布局时遇到了一个问题 我查看了包括这一个在内的在线示例。然而,这些示例没有提到如何测试父类。 问题是父类是抽象的。这意味着,无法实例化页面,它会抛出一个异常(这是理所当然的) 我曾想过使用mock或fake类将该类作为常规POJO进行测试,但之后我将无法测试抽象父类中的wicket组件 我考虑的另