面向对象语言,与java类比学习前端
很是适合移动和Web应用程序java
树形布局,一切皆组件git
子listview须要制定高度,使用 shrinkWrap: true 内容适配高度;github
滑动类型设置: physics: new NeverScrollableScrollPhysics(), 禁止子模块列表滑动影响下拉刷新segmentfault
http://www.javashuo.com/article/p-qzqkmmwr-my.html浏览器
须要指定宽和高微信
使用dart的async包下的 Timer.periodic 实现jsp
https://www.jianshu.com/p/f7a9b8c84d26async
先注册APPID布局
https://pub.dartlang.org/packages/sy_flutter_wechat
https://pub.dartlang.org/packages/image_picker_saver
水平溢出:
对于图片,动态的text数据,须要对container容器的宽度作计算约束,适配不一样大小的手机
constraints: BoxConstraints(maxWidth: _descWidth),
获取屏幕宽度
MediaQuery.of(context).size.width
垂直溢出:
对于不是滑动页面会出现底部溢出,使用 SingleChildScrollView 包裹,使其滑动,避免垂直溢出
flutter中弹窗是至关于一个页面,一个新的context
方式一:Navigator
flutter子父页面传参,相对前端而言很简单,由于dart是面相对象的语言,能够在导航中经过有参构造传参
使用Navigator
组件,而后使用路由MaterialPageRoute
传递参数
父》子, 子》父
final result = await Navigator.push( context, MaterialPageRoute( builder: (context) => new OtherPage(param: param), ));
Navigator.pop(context,'$result'); //xxx就是返回的参数
方式二:事件监听传值
使用eventBus, import 'package:event_bus/event_bus.dart';
1建立事件
class OnTapEvent { Map data; OnTapEvent (this.data); }
2发出事件 eventBus.fire(new OnTapEvent());
3监听事件
eventBus.on<OnTapReportEvent>() .listen((OnTapEvent data) { //TODO });
打开默认浏览器,或跳转其余页面
https://pub.dartlang.org/packages/url_launcher#-readme-tab-
http://www.javashuo.com/article/p-rjkojdzm-cz.html
持久化到手机
https://pub.dartlang.org/packages/shared_preferences
https://github.com/flutterchina/dio/blob/flutter/README-ZH.md