面嚮對象語言,與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