给定代码块优化代码
1 | class Recipe { |
给定代码块,解决文本超出屏幕
1 | class MyWidget extends StatelessWidget { |
注意
使用Expanded
widget来包裹Text
widget,以告知Row
忽略Text
widget的固有宽度,并且根据行中剩余的空间来为其分配宽度。在Row
、Column
或者Flex
widget中使用超过一个Expandend
widget时,会均匀的分配剩余空间。当有多个Expand
widget时,可以使用flex
属性对优先级进行排序。假如你还使用了Text
widget的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