Flutter 搜索, 轮播, 列表构建

前言

上篇文章已说明写flutter系列项目是在的想法, 已经完成了框架的搭建, 以及底部的导航的实现.
这篇文上介绍第一个导航页面的布局内容. 主要内容包括: 列表显示, 搜索框显示, 轮播图显示
效果图如下:


1.png

从上到下布局开始介绍

搜索框

首先在导航文件中添加


2.png

首先新建TextFieldWidget类, 其中代码如下:

class TextFieldWidget extends StatelessWidget {
  Widget buildTextField() {
    // theme设置局部主题
    return Theme(
      data: new ThemeData(primaryColor: Colors.grey),
      child: new TextField(
        cursorColor: Colors.grey, // 光标颜色
        // 默认设置
        decoration: InputDecoration(
            contentPadding: const EdgeInsets.symmetric(vertical: 10.0),
            border: InputBorder.none,
            icon: Icon(Icons.search),
            hintText: "搜索 flutter 组件",
            hintStyle: new TextStyle(
                fontSize: 14, color: Color.fromARGB(50, 0, 0, 0))),
        style: new TextStyle(fontSize: 14, color: Colors.black),
      ),
    );
  }

  @override
  Widget build(BuildContext context) {
    return Container(
    // 修饰搜索框, 白色背景与圆角
      decoration: new BoxDecoration(
        color: Colors.white,
        borderRadius: new BorderRadius.all(new Radius.circular(5.0)),
      ),
      alignment: Alignment.center,
      height: 36,
      padding: EdgeInsets.fromLTRB(10.0, 0.0, 10.0, 0.0),
      child: buildTextField(),
    );
  }
}

主要说明已在代码中注释, 如有疑问可以讨论

轮播图

上网查询了一下,采用的是flutter_swiper: ^1.0.6这个库, 引入一下放到pubsec.yaml文件下.即可使用,代码如下:

new Container(
          width: MediaQuery.of(context).size.width,
          height: 200,
          child: Swiper(
              itemCount: 3,
              itemBuilder: _swiperBuilder,
              pagination: new SwiperPagination(
                  builder: DotSwiperPaginationBuilder(
                color: Colors.black54,
                activeColor: Colors.white,
                size: 5.0,
                activeSize: 5.0,
              )),
              scrollDirection: Axis.horizontal,
              autoplay: true,
              onTap: (index) => print('点击了第$index个')),
        ),

_swiperBuilder方法:

  Widget _swiperBuilder(BuildContext context, int index) {
    return (Image.network("http://via.placeholder.com/350x150",
        fit: BoxFit.fill));
  }

列表

new Expanded(
          child: new ListView.builder(
            itemCount: 10,
            itemBuilder: _listBuilder,
          ),
        )

_listBuilder方法:

 Widget _listBuilder(BuildContext context, int index) {
    return new Container(
      padding: EdgeInsets.all(10.0),
      margin: new EdgeInsets.symmetric(horizontal: 10.0, vertical: 6.0),
      decoration: new BoxDecoration(
        boxShadow: <BoxShadow>[
          new BoxShadow(
            color: const Color(0x99000000),
            offset: new Offset(0.0, 0.5),
            blurRadius: 1.0,
          ),
        ],
        color: Colors.white,
        borderRadius: new BorderRadius.all(new Radius.circular(5.0)),
      ),
      child: new Row(
        crossAxisAlignment: CrossAxisAlignment.center,
        children: <Widget>[
          new Expanded(
            child: new Column(
              crossAxisAlignment: CrossAxisAlignment.start,
              children: <Widget>[
                new Container(
                  margin: new EdgeInsets.only(bottom: 10.0),
                  child: new Text(
                    "8篇文章, 再学不会flutter你来打我!",
                    style: new TextStyle(fontSize: 14, color: Colors.black45),
                  ),
                ),
                new Text(
                  "我是作者",
                  style: new TextStyle(fontSize: 14, color: Colors.black45),
                ),
              ],
            ),
          ),
          new Icon(
            Icons.keyboard_arrow_right,
            color: Colors.grey,
          )
        ],
      ),
    );
  }

以上全部会展现出效果图的效果了.

重点讲解

  • 1,一般组件TextField, text, image. 没有margin等属性, 需要用container包含
  • 2, Expanded会撑起宽度.
  • 3, Theme可设置局部主题. 一般在main中设置全局主题

下篇

下篇介绍内容如下

  • 1, 导航跳转详情页面
  • 2, 列表刷新加载,
  • 3, 网络数据请求
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 159,117评论 4 362
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 67,328评论 1 293
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 108,839评论 0 243
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 44,007评论 0 206
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 52,384评论 3 287
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 40,629评论 1 219
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 31,880评论 2 313
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,593评论 0 198
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,313评论 1 243
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,575评论 2 246
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 32,066评论 1 260
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,392评论 2 253
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 33,052评论 3 236
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,082评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,844评论 0 195
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 35,662评论 2 274
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,575评论 2 270

推荐阅读更多精彩内容

  • 发现 关注 消息 iOS 第三方库、插件、知名博客总结 作者大灰狼的小绵羊哥哥关注 2017.06.26 09:4...
    肇东周阅读 11,614评论 4 59
  • 水晶之雁是我的笔名,来自美丽的广西,希望自己有水晶般的心灵,大雁一样的梦想。 我喜欢读书写作,喜欢健康养生,我的愿...
    水晶之雁888阅读 1,123评论 10 36
  • 常言道,女子本弱,为母则强。 上一代,更多的母亲为了子女,放弃了自己,“我辛辛苦苦的干活,你还不好好的学习,对的起...
    李豫一阅读 353评论 2 0
  • 不出李佳所料,钟海内心的焦灼无以言喻。这次他下定决定,一定要快刀斩乱麻,结束和李佳的婚姻,然后去张敏老家寻找她。原...
    在水伊人_f121阅读 377评论 2 2
  • 60千米阳光 照耀着蓬勃的萌动 风里有生生不息的味道 汗水浇灌的车轮 牵着青春向前奔跑 争先恐后的拉爆 不为终点 ...
    panjw阅读 174评论 0 4