美文网首页
第五章:Flutter之wechatDemo(发现页面)

第五章:Flutter之wechatDemo(发现页面)

作者: Mr姜饼 | 来源:发表于2021-05-14 09:59 被阅读0次

    上一节为大家介绍了主框架的搭建,这节课将为大家搭建"发现"页面的效果

    1.创建listview,同时为了方便调试,我们将homePage中的currentIndex 改为 2
    import 'package:flutter/material.dart';
    
    class DiscoverPage extends StatefulWidget {
      @override
      _State createState() => _State();
    }
    
    class _State extends State<DiscoverPage> {
      @override
      Widget build(BuildContext context) {
        return Scaffold(
          appBar: AppBar(
            title: Text('发现'),
          ),
          body: ListView(
            children: [
              Text("1"),
              Text("2"),
              Text("3"),
              Text("4"),
              Text("5"),
            ],
          )
        );
      }
    }
    

    run

    12.png
    2.我来创建具体的cell吧
    image.png

    首先我们先写死一个静态页面,数据的填充,我们之后再改进

    import 'package:flutter/material.dart';
    
    class DiscoverCell extends StatelessWidget {
    
      @override
      Widget build(BuildContext context) {
        return Container(
            color: Colors.white,
            height: 55,
            child: Row(
              mainAxisAlignment: MainAxisAlignment.spaceBetween,
              children: [
                //left
                Container(
                  padding: EdgeInsets.all(10),
                  child: Row(
                    children: [
                      Image.asset('images/朋友圈.png',width: 20,),
                      SizedBox(width: 10,),
                      Text('朋友圈')
                    ],
                  ),
    
                ),
                //right
                Container(
                  padding: EdgeInsets.all(10),
                  child: Row(
                    children: [
                      Text('我是副标题'),
                      SizedBox(width: 10,),
                      Image.asset('images/badge.png',width: 10,),
                      SizedBox(width: 10,),
                      Image.asset('images/icon_right.png',width: 15,),
                    ],
                  ),
                ),
    
              ],
            ),
    
    
        );
      }
    }
    
    

    run

    14.png
    3.cell属性关联
    import 'package:flutter/material.dart';
    
    class DiscoverCell extends StatelessWidget {
    
      final String title;//标题
      final String iconUrl;//图标
      final String subTitle;//副标题
      final String notiIcomUrl;//消息红点
    
    
      //构造函数
      DiscoverCell({
        this.title,
        this.iconUrl,
        this.subTitle,
        this.notiIcomUrl,
      });
    
      @override
      Widget build(BuildContext context) {
        return Container(
            color: Colors.white,
            height: 55,
            child: Row(
              mainAxisAlignment: MainAxisAlignment.spaceBetween,
              children: [
                //left
                Container(
                  padding: EdgeInsets.all(10),
                  child: Row(
                    children: [
                      Image.asset(iconUrl,width: 20,),
                      SizedBox(width: 10,),
                      Text(title)
                    ],
                  ),
                ),
                //right
                Container(
                  padding: EdgeInsets.all(10),
                  child: Row(
                    children: [
                      (subTitle != null)? Text(subTitle) : Text(''),//判断是否存在副标题
                      (notiIcomUrl != null)?  Image.asset(notiIcomUrl,width: 10,) : Container(),//判断是否存在消息红点
                      Image.asset('images/icon_right.png',width: 15,),
                    ],
                  ),
                ),
              ],),);
      }
    }
    
    

    接着修改discoverPage

    body: ListView(
            children: [
              DiscoverCell(title: '朋友圈',iconUrl: 'images/朋友圈.png',notiIcomUrl: 'images/badge.png'),
              SizedBox(height: 5,),//间隔盒子
              DiscoverCell(title: '扫一扫',iconUrl: 'images/扫一扫.png',),
              //分割线
              Container(height: 1,color: Color.fromARGB(222, 222, 222, 222),child: Row(children: [SizedBox(width: 40,height: 1,child: Container(width: 50,color: Colors.white,),)],),),
              DiscoverCell(title: '搜一搜',iconUrl: 'images/搜一搜.png',),
              SizedBox(height: 5,),//间隔盒子
              DiscoverCell(title: '摇一摇',iconUrl: 'images/摇一摇.png',),
              //分割线
              Container(height: 1,color: Color.fromARGB(222, 222, 222, 222),child: Row(children: [SizedBox(width: 40,height: 1,child: Container(width: 50,color: Colors.white,),)],),),
              DiscoverCell(title: '游戏',iconUrl: 'images/游戏.png',notiIcomUrl: 'images/badge.png'),
              SizedBox(height: 5,),//间隔盒子
              DiscoverCell(title: '附近的人',iconUrl: 'images/附近的人icon.png',subTitle: '查找有缘人',),
              SizedBox(height: 5,),//间隔盒子
              DiscoverCell(title: '购物',iconUrl: 'images/购物.png',),
              //分割线
              Container(height: 1,color: Color.fromARGB(222, 222, 222, 222),child: Row(children: [SizedBox(width: 40,height: 1,child: Container(width: 50,color: Colors.white,),)],),),
              DiscoverCell(title: '看一看',iconUrl: 'images/看一看icon.png',),
              //DiscoverCell(),
            ],
          )
    

    分隔线

     Container(height: 1,color: Color.fromARGB(222, 222, 222, 222),child: Row(children: [SizedBox(width: 40,height: 1,child: Container(width: 50,color: Colors.white,),)],),),
    

    run

    15.png
    4.点击cell进行页面跳转,创建发现页面的子页面discover_child_page
    import 'package:flutter/material.dart';
    
    class DiscoverChildPage extends StatelessWidget {
      //标题
      final String headTitle;
    
      DiscoverChildPage({
        this.headTitle,
      });
    
      @override
      Widget build(BuildContext context) {
        return Scaffold(
          appBar: AppBar(
            title: Text(headTitle),
          ),
        );
      }
    }
    
    
    5.为cell添加点击事件
    image.png

    run 点击每个cell,查看打印效果

    image.png
    5.点击事件变更为页面跳转
    onTap: (){
            Navigator.of(context).push(
              MaterialPageRoute(builder: (context) => DiscoverChildPage(headTitle: title,)),
            );
    //等价
    //        Navigator.of(context).push(
    //          MaterialPageRoute(builder: (context) {
    //            return DiscoverChildPage(headTitle: title,);
    //          }),
    //        );
    //等价
    //        Navigator.push(context,
    //          MaterialPageRoute(builder: (context){
    //            return DiscoverChildPage(headTitle: title,);
    //          }),
    //        );
          },
    
    总结:至此我们已经完成了发现页面的初步搭建,完结

    ✿✿ヽ(°▽°)ノ✿

    相关文章

      网友评论

          本文标题:第五章:Flutter之wechatDemo(发现页面)

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