给定代码块优化代码
1 | class Recipe { |
给定代码块,解决文本超出屏幕
1 | class MyWidget extends StatelessWidget { |
注意 使用Expandedwidget来包裹Textwidget,以告知Row忽略Textwidget的固有宽度,并且根据行中剩余的空间来为其分配宽度。在Row、Column或者Flexwidget中使用超过一个Expandend
widget时,会均匀的分配剩余空间。当有多个Expandwidget时,可以使用flex属性对优先级进行排序。假如你还使用了Textwidget的overflow属性,那就太棒了。
实现tag
1 | class MyWidget extends StatelessWidget { |
私有化变量
1 | // 全局变量 |
hot reload和hot restart的区别是什么?
hot reload在立刻更新UI的同时保持程序的状态,相比之下hot restart花费更长一点的时间,因为它会在更新UI之前将程序的状态置为初始状态。两者都比完全重新启动(full
restart)要快,这需要重新编译应用程序。当有重大的更改时,你需要停止并重新运行该程序,在极少数的情况下,你可能还需要在模拟器或者真机上删除应用程序,然后重新安装。
StatelessWidget和StatefulWidget`的区别是什么?
StatelessWidget是一个不可变的类,充当UI布局中某些部分的蓝图,当某个组件在显示期间不需要改变,或者说没有状态(State),你可以使用它。 StatefulWidget也是不可变的,但是它和一个State对象关联在一起,该对象允许你每次通过调用setState()时,使用新值重建这个widget,当UI可以动态改变时使用StatefulWidget`
。假如State变得越来越复杂,或者一些状态存在于两个不同的widget中,则应该考虑更复杂的状态管理方案
WidgetsApp和MaterialApp`的区别什么?
WidgetsApp提供了基础的导航能力,和widgets`库一起,它包含了很多Flutter使用的基础widget。
MaterialApp和与之相应的的material库,是在WidgetsApp和与之相应的widgets库之上构建的一层,它遵循了Material设计风格
,可以再任何平台或者设备上为应用程序提供统一的外观,material库提供了更多的Widget。
在你的项目中,并不一定要使用MaterialApp,也可以使用CupertinoApp来构建iOS风格的应用程序,这可以使iOS用户感觉更亲切,甚至你也可以自己定义一些widget。
可以嵌套使用Scaffold吗,为什么或者为什么不?
当然可以,你绝对可以嵌套使用Scaffold,这体现Flutter的美,你可以控制整个UI。Scaffold也是个widget,因此你可以把它放在任何widget可以放置的地方。通过嵌套Scaffold,你可以对抽屉(drawers)、卡片(snack bars)
、底页(bottom sheets)进行分层。
转载请注明来源,欢迎对文章中的引用来源进行考证,欢迎指出任何有错误或不够清晰的表达。可以在下面评论区评论,也可以邮件至 nathanwriting@126.com