美文网首页Flutter
打造炫酷的Flutter列表

打造炫酷的Flutter列表

作者: 小华坚决上王者 | 来源:发表于2019-06-27 15:38 被阅读0次

使用了flutter一段时间,越来越喜欢flutter了,flutter比我们想象中的强大。这篇文章介绍了怎么使用flutter来展示一个很漂亮的list,先看下效果图。

image

样式还是很漂亮的,下面我们一步一步完成这个小项目。

开发前准备

  • 我们会用到加载网络图片FadeInImage这么个widget,需要一个loading的icon,所以需要在pubspec.yaml里配置下静态资源,只有配置过的静态资源才可以在项目中使用
assets:
   - assets/images/
  • 需要mock一些假数据和一些常用的常量,所以专门建了个constant.dart来管理
    colors  # 颜色
    data  # list的数据
    # ...

appBar部分

  • appBar需要透明的背景这样才能将后面的图片展示出来,看起来很像沉浸式。
  • 需要将elevations设置为0,这样就可以取消安卓特有的阴影效果,下面是代码:
Scaffold(
    appBar: AppBar(
    backgroundColor: Colors.transparent,
    elevation: 0,
    title: Text(
        'flutter awesome list',
        style: TextStyle(
        color: Colors.white,
        ),
    ),
    ),
    body: HomeBody(),
);

Banner部分

  • 我们需要使用Transform.translate()这个weidget来将Banner部分向上移动,让appBar全部展示在banner上面,这里给的offset为offset: Offset(0, -56),56为appBar的高度
  • 下面的斜切造型需要使用ClipPath()来完成,用法有点像canvas,代码如下:
class MyClipper extends CustomClipper<Path> {
  @override
  Path getClip(Size size) {
    Path p = Path();
    p.lineTo(size.width, 0.0);
    p.lineTo(size.width, size.height / 4.75);
    p.lineTo(0.0, size.height / 3.75);
    p.close();
    return p;
  }

  @override
  bool shouldReclip(CustomClipper oldClipper) {
    return true;
  }
}
  • 用户信息的展示用的widget是ListTile和CircleAvatar,用法也比较简单,我直接贴代码了:
ListTile(
    leading: CircleAvatar(
    backgroundImage: NetworkImage(CONSTANT.userAvatar),
    ),
    title: Text(
    CONSTANT.userName,
    style: CONSTANT.defaultTextStyle,
    textScaleFactor: 1.5,
    ),
    subtitle: Text(
    CONSTANT.userProfile,
    style: CONSTANT.defaultTextStyle,
    ),
)

列表展示部分

  • 列表的展示使用的是ListView.builder(),两个必传参数itemCount和itemBuilder,前者控制列表的数量,后者控制item的展示,因为item的样式还是比较多的,所以抽离成单独的StatelessWidget组件:AwesomeListItem
  • 我们用InkWell组件将AwesomeListItem包裹,InkWell是flutter自带的组件,这个组件的特点是点击的时候带有水墨绽开的效果。点击item的时候,我们使用Navigator.push跳转到详情页面
  • 图片的展示,我们还是使用的FadeInImage,这种渐入效果的用户体验还是很不错的。然后再使用Hero()来包裹FadeInImage,这样能在页面跳转的时候提供图片之间的过渡动画,很是强大和炫酷
Hero(
    tag: index,
    child: FadeInImage(
        image: NetworkImage(data.image),
        fit: BoxFit.cover,
        placeholder: AssetImage('assets/images/loading.gif'),
    ),
)

详情页面

最后就是详情页面的展示,这个页面并没有写什么样式,展示了从列表页跳转过来时,图片的过渡效果,有兴趣的同学可以丰富下页面的样式和内容

结尾

相关文章

  • 打造炫酷的Flutter列表

    使用了flutter一段时间,越来越喜欢flutter了,flutter比我们想象中的强大。这篇文章介绍了怎么使用...

  • 卡片组件布局

    Flutter还有一种比较比较酷炫的布局方式,我称 它为卡片式布局。这种布局类似ViewList,但是列表会以物理...

  • 09.卡片组件布局

    Flutter还有一种比较比较酷炫的布局方式,我称 它为卡片式布局。这种布局类似ViewList,但是列表会以物理...

  • Flutter实现一个酷炫带动画的列表型多选日历组件

    本文转载自掘金 原作者kimi_he Flutter实现一个酷炫带动画的列表型多选日历组件 由于项目需要,用Flu...

  • 2018-11-21

    CoordinateLayout打造酷炫效果 一、CoordinatorLayout简介 CoordinatorL...

  • 动画实战:打造仿搜索引擎加载动画

    前言 在上一篇 动画实战:打造炫酷的加载动画 中,我们利用属性动画打造了较为炫酷的加载动画,本篇文章还是以属性动画...

  • Flutter炫酷ui

    在闲暇冲浪的时候,无意间看到了这张设计图,眼睛一亮,感觉这个设计和创意非常酷,打算着手实现一下。关于设计图的作者没...

  • AS插件开发 - 收藏集 - 掘金

    打造酷炫 AndroidStudio 插件 - Android - 掘金 转载请注明出处:【huachao1001...

  • 打造炫酷sublime

    配置主题颜色 首先执行命令git clone https://github.com/Colorsublime/Co...

  • 我用玩AndroidApi写了一个sdk

    前言 相信很多同学都知道鸿神的WanAndroidapi,也写过很多酷炫的App,flutter、compose、...

网友评论

    本文标题:打造炫酷的Flutter列表

    本文链接:https://www.haomeiwen.com/subject/cfjrcctx.html