博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
flutter仿boss直聘,一个比较完整的例子
阅读量:4088 次
发布时间:2019-05-25

本文共 3081 字,大约阅读时间需要 10 分钟。

简介:2年前,RN刚出来时做了个仿拉钩的demo,. 这次flutter来了,想感受一下,索性用目前flutter的版本写的一个仿boss直聘应用。 时间有限,没完全仿照,去掉了一些功能,但是界面风格一致,有参考价值。

  • github地址:.
  • 关于flutter的源码分析,可以看我另一篇文章: .
  • QQ技术交流群:468010872

感悟

  1. 与一些文章里介绍的非常相似,如果会RN,那么学起来会很快,flutter借鉴了RN的组件化思想,路由机制,状态机等。
  2. Dart语法有些奇葩,但掌握之后,开发效率会很快,整个demo加起来开发了2天不到。
  3. 可以同时在android和ios运行。
  4. 性能很快,超过RN,因为没有bridge层。
  5. 还是要多看官方文档和源码,才能碰到问题解决。
  6. IDE还不是很友好,hot reload有时无效。
  7. 还是比RN要复杂一些的。

先上效果

 

img

 

 

部署到手机

确保flutter正确安装之后,进入目录运行flutter run --release

环境问题

如果flutter环境有问题,在.bash_profile里加上如下内容

export PUB_HOSTED_URL=https://pub.flutter-io.cnexport FLUTTER_STORAGE_BASE_URL=https://storage.flutter-io.cnexport PATH=`pwd`/flutter/bin:$PATH复制代码

涉及技术点

  1. Theme主题设置
theme: new ThemeData(        primaryIconTheme: const IconThemeData(color: Colors.white),        brightness: Brightness.light,        primaryColor: new Color.fromARGB(255, 0, 215, 198),        accentColor: Colors.cyan[300],      )复制代码
  1. 自定义TabBar
@override      Widget build(BuildContext context) {        assert(debugCheckHasMaterial(context));            double height = _kTextAndIconTabHeight;        Widget label = new Column(            mainAxisAlignment: MainAxisAlignment.center,            crossAxisAlignment: CrossAxisAlignment.center,            children: 
[ new Container( child: new Image( image: new AssetImage(this.icon), height: 30.0, width: 30.0, ), margin: const EdgeInsets.only(bottom: _kMarginBottom), ), _buildLabelText() ] ); }复制代码
  1. MD风格及一些组件应用
new SliverAppBar(      expandedHeight: _appBarHeight,      pinned: _appBarBehavior == AppBarBehavior.pinned,      floating: _appBarBehavior == AppBarBehavior.floating ||          _appBarBehavior == AppBarBehavior.snapping,      snap: _appBarBehavior == AppBarBehavior.snapping,      flexibleSpace: new FlexibleSpaceBar(        title: new Text(_company.name,            style: new TextStyle(color: Colors.white)),        background: new Stack(          fit: StackFit.expand,          children: 
[ new Image.network( 'https://img.bosszhipin.com/beijin/mcs/chatphoto/20170725/861159df793857d6cb984b52db4d4c9c.jpg', fit: BoxFit.cover, height: _appBarHeight, ), ], ), ), )复制代码
  1. 解决了官方demo里路由跳转效果卡顿的问题
Navigator.of(context).push(new PageRouteBuilder(        opaque: false,        pageBuilder: (BuildContext context, _, __) {          return new CompanyDetail(company);        },        transitionsBuilder: (_, Animation
animation, __, Widget child) { return new FadeTransition( opacity: animation, child: new SlideTransition(position: new Tween
( begin: const Offset(0.0, 1.0), end: Offset.zero, ).animate(animation), child: child), ); } ));复制代码

TODO

  1. 下拉筛选组件
  2. mock server,模拟真实请求
  3. 分页
  4. 目录结构调整,更符合生产环境
  5. viewpager轮播图
  6. 路由机制封装

 

作者:kimi_he
链接:https://juejin.im/post/5aa91fb35188257ddb0f511b
来源:掘金
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

你可能感兴趣的文章
php分享三十三:常量
查看>>
周报告
查看>>
Scapy学习小记
查看>>
python基础
查看>>
android 开源框架
查看>>
WinForm 无边框窗体和timer控件
查看>>
C++ 构造函数 初始化列表
查看>>
[置顶] windows player,wzplayerV2 for windows
查看>>
mmsPlayer, for android,ios ,wince,windows,wm等
查看>>
MySQL中表的复制
查看>>
Python 通过浏览器 打开指定网址
查看>>
认识Cookie和状态管理
查看>>
ASP.NET系统 + Access数据库
查看>>
把DataTable转换为List<T>
查看>>
36数据结构与算法分析之---拓扑排序
查看>>
JSON 与 Java 转化
查看>>
(13flask继续研究)自己动手,编写神经网络程序,解决Mnist问题,并网络化部署...
查看>>
题目分类
查看>>
Oracle 字符集的查看和修改
查看>>
Spacy 使用
查看>>