Flutter没有ScrollView, 合并到了ListView, 通过ListView.builder创建的ListView提供了View复用的逻辑.
ListView.builder( itemCount: widgets.length, itemBuilder: (BuildContext context, int position) { return Text(xxx); }))其中itemBuilder有点像Android ListView的getView, 官方文档说它会自动回收Element给你, 但是事实上每次你都需要根据position生成新的Widgets, 所以呢应该是Flutter在内部回收了之前的Widgets并在你重新创建的时候又用上了.
BTW, 通过ListView构造来显示就不具备这种特性, 所以大量数据需要用Builder.
Flutter横竖屏怎么玩.因为它实际上还是借助了Android程序的壳子, 所以如果AndroidManifect定义了android:configChanges="orientation|screenSize", 则Flutter会自己hanlde.
怎么处理GestureFlutter提供了GestureDetector, 它相当于一个Container, 将我们期望接收手势的Widgets放进去, 再实现事件回调就行了.
GestureDetector( child: FlutterLogo( size: 200.0, ), onTap: () { print("tap"); }, )它同样支持其他的手势, 如onDoubleTap等等等.
字体怎么弄首先需要在pubspec.yaml里面配置需要的字体库:
fonts: - family: MyCustomFont fonts: - asset: fonts/MyCustomFont.ttf - style: italic然后在Text的style属性进行配置.
Text( 'This is a custom font text', style: TextStyle(fontFamily: 'MyCustomFont'), ) Hint哪里去了, 错误信息怎么输出对于输入框的Hint基本一致, 可能就是换了个名字, 一看便知.
TextField( decoration: InputDecoration(hintText: "This is a hint", errorText: _getErrorText()), ) 总结Flutter在视图渲染上另辟蹊径, 性能优势凸显, 在跨平台框架属于一匹黑马, 又有Google撑腰, 值得在Mobile勤耕多年的同学入手.
由于作者曾经从事过2年的Webkit开发工作, 拜读了Flutter的渲染模式, 很像是Webkit/Chrome/Blink的思路, 通过查证, 起草者确实有大批同样的人, 如果你还没有入坑RN, 或许Flutter可以作为跨平台方案学习的首选哦.
同样Google自己也有很多Plugin去支持更多扩展功能, 如GPS, Camera, SharePreference, Database. 还例如Firebase这种亲儿子级的服务也是全面支持Flutter. 这些都可以通过Dartlang来查询.
当然也可以自己去开发需要的Plugin来适配需要的功能, 基于的技术就是上面有提的MethodChannel, NDK的支持也是同样的道理.
Referencehttps://flutter.io/docs/get-started/flutter-for/android-devs