Flutter是Google使用Dart语言开发的移动应用开发框架,使用一套Dart代码就能构建高性能、高保真的iOS和Android应用程序,并且在排版、图标、滚动、点击等方面实现零差异。
2年前,RN刚出来时做了个仿拉钩的demo,react-native-lagou.
这次flutter来了,想感受一下,索性用目前flutter的版本写的一个仿boss直聘应用。
时间有限,没完全仿照,去掉了一些功能,但是界面风格一致,有参考价值。
github地址:flutter仿boss直聘.
感悟
先上效果
部署到手机
确保flutter正确安装之后,进入目录运行flutter run --release
环境问题
如果flutter环境有问题,在.bash_profile里加上如下内容
export PUB_HOSTED_URL=https://pub.flutter-io.cn export FLUTTER_STORAGE_BASE_URL=https://storage.flutter-io.cn export 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], )
2.自定义TabBar
@override Widget build(BuildContext context) { assert(debugCheckHasMaterial(context)); double height = _kTextAndIconTabHeight; Widget label = new Column( mainAxisAlignment: MainAxisAlignment.center, crossAxisAlignment: CrossAxisAlignment.center, children: <Widget>[ new Container( child: new Image( image: new AssetImage(this.icon), height: 30.0, width: 30.0, ), margin: const EdgeInsets.only(bottom: _kMarginBottom), ), _buildLabelText() ] ); }
3.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: <Widget>[ new Image.network( 'https://img.bosszhipin.com/beijin/mcs/chatphoto/20170725/861159df793857d6cb984b52db4d4c9c.jpg', fit: BoxFit.cover, height: _appBarHeight, ), ], ), ), )
4.解决了官方demo里路由跳转效果卡顿的问题
Navigator.of(context).push(new PageRouteBuilder( opaque: false, pageBuilder: (BuildContext context, _, __) { return new CompanyDetail(company); }, transitionsBuilder: (_, Animation<double> animation, __, Widget child) { return new FadeTransition( opacity: animation, child: new SlideTransition(position: new Tween<Offset>( begin: const Offset(0.0, 1.0), end: Offset.zero, ).animate(animation), child: child), ); } ))
TODO
总结
以上所述是小编给大家介绍的flutter实现仿boss直聘,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对小牛知识库网站的支持!
牛客上没看到面boss直聘的面经,更新一下记得的点 一面 1.说说你对变量提升的理解?以及一道变量提升的输出题 2.jsBridge的原理 3.如果让你写一个埋点监控方案你会怎么设计 4.首屏加载速度优化 5.输入url后浏览器的工作流程 6.浏览器缓存 7.http1/1.1/2/3的升级点 8.tcp和udp的区别 二面 1.vue keep-alive原理 2.EventBus原理 3.fl
1.自我介绍。 2.简单聊聊简历。不算八股。 3.实习项目。 项目整体架构。 雪花算法。发生时间回拨怎么办?(答了,记录最后一次生成时的时间戳,和暂停一会儿再生成,还有用部分标志位在 发生时加1)。针对短时间高峰,递增序列号不够怎么办?(我答的是某台机器使用两个机器id,也就是两个雪花id,面试官指出可以向后借用未来时间戳)。 redis分布式锁的实现。 4.反问。部门比较核心,base北京。
1.你是学金融的,讲讲怎么学的计算机,深度如何。 2.聊项目(面试官碰巧用过类似的项目)。项目执行的整个流程?有没有对特殊场景进行定制化处理? 有没有参考谷歌的ab测试平台? 2.为什么项目选用mysql?(懵了,还真没想过) 3.线上发现mysql死锁的处理流程?发生死锁了,服务可用吗?mysql自动解锁机制? 4.聊一聊kafka。kafka整体架构。kafka如何按照时间查消息?kafka是
#软件开发2024笔面经# 1.浏览器输入网址到渲染完成经历了哪些过程? 2.http通信的时候,在cache-control这个参数里面的配置项no-cache,no-store有什么区别 3.addeventlistener这个原生事件有几个形参? 4.冒泡和捕获两个阶段,哪个先触发? 5.js里面有一个叫事件委托,解释一下事件委托的实际作用 6.移动端里实现一个0.5px的线有几种实现方式?
1.介绍一下CAS机制。 2.如何保证可见性? 3.为什么Volatile关键字可以保证可见性。 4.Lock和Synchronized两种锁的区别。 5.介绍一下Spring中的AOP。 6.AOP中两种动态代理的区别? 7.为什么要使用动态代理? 8.SpringBoot中starter的原理? 9.如何自定义一个Starter? 10.当一个Java程序发送一个hello world消息时,
1synchronized 不同地方的运用,锁粒度,对service加锁是否会死锁 用synchronized 写一个死锁 2事务的使用,传播机制 3Websocket用过吗,后端主动向前端推送 4mysql 插入怎么写 凭记忆写的,不全 Base地 期望工资 业务等