記得上一篇的寫做時間還在2018年2月份,已經好久沒更新了,而flutter的版本更新了好幾回,自flutter 1.0正式版推出以後,一直有打算把以前的項目重寫一下,由於flutter自己更新了許多新特性,老的已是過去式了,也老有人來問我,以前的項目運行不了,是的,由於sdk太老了,並且以前的項目純粹是練手玩。前端
在過去的這段時間裏,踊躍出了不少關於flutter的技術文章和開源項目例子,基本上天天都有,同比RN剛出來時,熱情度遠超RN。因而,筆者懷着對新技術熱情的學習態度重寫了這個開源項目,而且後續也會不斷完善。vue
爲何選仿BOSS直聘做爲題材? 由於這款APP相信你們都在使用,裏面組件繁多且有必定複雜度,能衍生出來許多基於flutter組件庫的子項目,裏面有些功能,好比地圖,IM,後面都會使用flutter來實現。爲了讓項目更接近真實,此次連服務端也實現了。先把開源地址提供給你們:node
服務端版本:flutter仿boss直聘服務端.git
flutter版本:flutter仿boss直聘.github
服務端:api
flutter端:bash
Navigator.of(context).pushAndRemoveUntil(
PageRouteBuilder<Null>(
pageBuilder: (BuildContext context, Animation<double> animation,
Animation<double> secondaryAnimation) {
return AnimatedBuilder(
animation: animation,
builder: (BuildContext context, Widget child) {
return Opacity(
opacity: animation.value,
child: new MainPage(title: 'Boss直聘'),
);
},
);
},
transitionDuration: Duration(milliseconds: 300),
),
(Route route) => route == null);
複製代碼
列表頁面,沒啥好說的,ListView你們應該都用過,只是須要記住一點,列表再跳轉詳情時須要記錄當前列表的滾動位置,只需加入如下代碼便可: key: new PageStorageKey('key-name')
服務器
Hero動畫,在詳情頁面裏,用了2處Hero動畫,Hero動畫是在route切換過程當中執行的動畫。須要當前頁和目標頁一一對應起來。微信
Hero(
tag: heroLogo,
child: ClipRRect(
borderRadius: new BorderRadius.circular(8.0),
child: Image.network(
widget.company.logo,
width: 70,
height: 70,
),
),
)),
複製代碼
_scrollListener() {
setState(() {
if (_scrollController.offset < 56 && _isShow) {
_isShow = false;
} else if (_scrollController.offset >= 56 && _isShow == false) {
_isShow = true;
}
});
}
複製代碼
微信:heruijun2258,註明來意。app