zoukankan      html  css  js  c++  java
  • 前端入门flutter-06 ListView基础列表组件、水平列表组件、图标组件

      在日常开发中,经常看到的列表界面就是这集的内容:

    • 垂直列表
    • 垂直图文列表
    • 横向列表
    • 动态列表

      ListView组件常用的参数:

    scrollDirection: Axis.horizontal 横向列表 Axis.vertical 垂直列表(默认垂直列表)
    padding : EdgeInsetsGeometry, 内边距  
    reverse:   bool, 组件反向排序  
    children :  List, 列表元素  

       (1)ListView列表组件、动态列表:

      代码如下:

      1 import 'package:flutter/material.dart';
      2 import 'res/listData.dart';
      3 
      4 void main(){
      5   runApp(new MyApp());
      6 
      7 }
      8 
      9 class MyApp extends StatelessWidget{
     10   @override
     11   Widget build(BuildContext context) {
     12     // TODO: implement build
     13     return MaterialApp(
     14         home:Scaffold(
     15           appBar: AppBar(title: Text("ListView列表组件、动态列表")),
     16           body: HomeContent4(),
     17         ),
     18     //    主题
     19       theme: ThemeData(primarySwatch: Colors.green),
     20     );
     21   }
     22 }
     23 
     24 
     25 // class HomeContent extends StatelessWidget {
     26 // //  自定义方法
     27 // List<Widget> getData(){
     28 //   List<Widget> list = new List();
     29 //   for(var i = 0;i<20;i++){
     30 //     list.add(
     31 //       ListTile(
     32 //         title: Text("我是第$i个列表"),
     33 //       )
     34 //     );
     35 //   }
     36 //   return list;
     37 // }
     38 // @override
     39 //   Widget build(BuildContext context) {
     40 //     // TODO: implement build
     41 //     return ListView(
     42 //       children: this.getData(),
     43 //     );
     44 //   }
     45 // }
     46 
     47 
     48 //ListView.builder
     49 // class HomeContent2 extends StatelessWidget{
     50 // //  自定义方法
     51 // List<Widget> list = new List();
     52 // HomeContent2(){
     53 //   for(var i = 0;i<20;i++){
     54 //     this.list.add(ListTile(
     55 //       title: Text("第二种第$i个列表"),
     56 //     ));
     57 //   }
     58 // }
     59 // @override
     60 //   Widget build(BuildContext context) {
     61 //     // TODO: implement build
     62 //     return ListView.builder(
     63 //         itemCount: this.list.length,
     64 //         itemBuilder: (context,index){
     65 //           return this.list[index];
     66 //         }
     67 //         );
     68 //   }
     69 // }
     70 
     71 //ListView.builder 使用外部资源
     72 class HomeContent4 extends StatelessWidget{
     73 //  自定义方法
     74 Widget _getListData(context,index){
     75   return ListTile(
     76     leading: Image.network(listData[index]["imageUrl"], 100.0,),
     77     title: Text(listData[index]["title"]),
     78     subtitle: Text(listData[index]["author"]),
     79   );
     80 }
     81 @override
     82   Widget build(BuildContext context) {
     83     // TODO: implement build
     84     return ListView.builder(
     85         itemCount: listData.length,
     86         itemBuilder:this._getListData//赋值不需要括号
     87 
     88         );
     89   }
     90 }
     91 
     92 //使用外部资源
     93 class HomeContent3 extends StatelessWidget {
     94 //  自定义方法
     95   List<Widget> getData(){
     96 
     97       var  template=listData.map((value){
     98         return ListTile(
     99           leading: Image.network(value["imageUrl"]),
    100           title: Text(value["title"]),
    101           subtitle: Text(value["author"])
    102         );
    103       });
    104       // ('123456','123456')
    105     return template.toList();
    106   }
    107   @override
    108   Widget build(BuildContext context) {
    109     // TODO: implement build
    110     return ListView(
    111       children: this.getData(),
    112     );
    113   }
    114 }

    动态数据文件:listData.dart

      效果图如下:

      

      (2)ListView列表组件、图标组件、水平列表

      代码如下:

      

    
    
    import 'package:flutter/material.dart';
    import 'package:fluttertoast/fluttertoast.dart';
    // import 'package:flutter_app1/main.dart';

    void main() {
    runApp(new MyApp());
    }

    class MyApp extends StatelessWidget {
    @override
    Widget build(BuildContext context) {
    // TODO: implement build
    return MaterialApp(
    home: Scaffold(
    appBar: AppBar(title: Text("ListView列表组件、图标组件")),
    body: HomeContent2(),
    ));
    }
    }

    class HomeContent extends StatelessWidget {
    @override
    Widget build(BuildContext context) {
    // TODO: implement build
    return ListView(padding: EdgeInsets.all(10.0), children: <Widget>[
    ListTile(
    title: Text(
    "据外媒,近日FBI公布了一份清单,并警告称有网络犯罪分子",
    style: TextStyle(fontSize: 24),
    ),
    subtitle: Text("正在使用一系列伪装成FBI的钓鱼网站来窃取用户信息"),
    ),
    ListTile(
    leading: Image.network(
    'https://ss0.bdstatic.com/94oJfD_bAAcT8t7mm9GUKT-xh_/timg?image&quality=100&size=b4000_4000&sec=1605168143&di=e92c5258dc948d103b1c85d53fe4f7e4&src=http://a0.att.hudong.com/30/29/01300000201438121627296084016.jpg'),
    title: Text("据外媒,近日FBI公布了一份清单,并警告称有网络犯罪分子"),
    subtitle: Text("正在使用一系列伪装成FBI的钓鱼网站来窃取用户信息"),
    trailing: Image.network(
    'https://ss0.bdstatic.com/94oJfD_bAAcT8t7mm9GUKT-xh_/timg?image&quality=100&size=b4000_4000&sec=1605168143&di=e92c5258dc948d103b1c85d53fe4f7e4&src=http://a0.att.hudong.com/30/29/01300000201438121627296084016.jpg'),
    ),
    ListTile(
    leading: Icon(Icons.add_road, size: 40.0, color: Colors.red),
    title: Text("据外媒,近日FBI公布了一份清单,并警告称有网络犯罪分子"),
    subtitle: Text("正在使用一系列伪装成FBI的钓鱼网站来窃取用户信息"),
    trailing: Icon(Icons.add_road, size: 40.0, color: Colors.red),
    ),
    ListTile(
    title: Text("据外媒,近日FBI公布了一份清单,并警告称有网络犯罪分子"),
    subtitle: Text("正在使用一系列伪装成FBI的钓鱼网站来窃取用户信息"),
    ),
    ListTile(
    title: Text("据外媒,近日FBI公布了一份清单,并警告称有网络犯罪分子"),
    subtitle: Text("正在使用一系列伪装成FBI的钓鱼网站来窃取用户信息"),
    ),
    ListTile(
    title: Text("据外媒,近日FBI公布了一份清单,并警告称有网络犯罪分子"),
    subtitle: Text("正在使用一系列伪装成FBI的钓鱼网站来窃取用户信息"),
    ),
    ]);
    }
    }

    //listview中使用其他的widgets
    class HomeContent2 extends StatelessWidget {
    @override
    Widget build(BuildContext context) {
    // TODO: implement build
    return ListView(
    padding: EdgeInsets.all(10.0),
    children: [
    Container(
    child: Text(
    '杰克快讯',
    textAlign: TextAlign.center,
    style: TextStyle(
    fontSize: 28.0,
    ),
    ),
    // height: 60.0,
    ),
    IconDemo(),
    Image.network(
    'https://ss0.bdstatic.com/70cFuHSh_Q1YnxGkpoWK1HF6hhy/it/u=547210280,4023660930&fm=26&gp=0.jpg'),
    Container(
    child: Text(
    '杰克快讯',
    textAlign: TextAlign.center,
    style: TextStyle(
    fontSize: 28.0,
    ),
    ),
    height: 60.0,
    ),
    Image.network(
    'https://ss0.bdstatic.com/70cFuHSh_Q1YnxGkpoWK1HF6hhy/it/u=547210280,4023660930&fm=26&gp=0.jpg'),
    Container(
    child: Text(
    '杰克快讯',
    textAlign: TextAlign.center,
    style: TextStyle(
    fontSize: 28.0,
    ),
    ),
    height: 60.0,
    ),
    Image.network(
    'https://ss0.bdstatic.com/70cFuHSh_Q1YnxGkpoWK1HF6hhy/it/u=547210280,4023660930&fm=26&gp=0.jpg'),
    Container(
    child: Text(
    '杰克快讯',
    textAlign: TextAlign.center,
    style: TextStyle(
    fontSize: 28.0,
    ),
    ),
    height: 60.0,
    ),
    Image.network(
    'https://ss0.bdstatic.com/70cFuHSh_Q1YnxGkpoWK1HF6hhy/it/u=547210280,4023660930&fm=26&gp=0.jpg')
    ],
    );
    }
    }

    //listview水平列表
    class HomeContent3 extends StatelessWidget {
    @override
    Widget build(BuildContext context) {
    // TODO: implement build
    return Container(
    height: 180.0,
    child: ListView(
    scrollDirection: Axis.horizontal,
    children: [
    Container(
    180.0,
    height: 100.0,
    color: Colors.red,
    child: ListView(
    children: [
    Container(
    child: Text(
    '橙色年华',
    style: TextStyle(color: Colors.white),
    ),
    ),
    Image.network(
    'https://ss0.bdstatic.com/94oJfD_bAAcT8t7mm9GUKT-xh_/timg?image&quality=100&size=b4000_4000&sec=1605168143&di=e92c5258dc948d103b1c85d53fe4f7e4&src=http://a0.att.hudong.com/30/29/01300000201438121627296084016.jpg')
    ],
    ),
    ),
    Container(
    180.0,
    height: 100.0,
    color: Colors.yellowAccent,
    ),
    Container(
    180.0,
    height: 100.0,
    color: Colors.lightBlue,
    ),
    Container(
    180.0,
    height: 100.0,
    color: Colors.greenAccent,
    ),
    Container(
    180.0,
    height: 100.0,
    color: Colors.deepPurple,
    ),
    Container(
    180.0,
    height: 100.0,
    color: Colors.black26,
    ),
    Container(
    180.0,
    height: 100.0,
    color: Colors.deepOrange,
    ),
    ],
    ),
    );
    }
    }

    //icon组件

    class IconDemo extends StatelessWidget {
    @override
    Widget build(BuildContext context) {
    // TODO: implement build
    return new Center(
    child: new Icon(
    Icons.android_outlined,
    color: Colors.redAccent,
    size: 150.0,
    ),
    );
    }
    }

    //
    
    

    HomeContent() 、HomeContent2() 、HomeContent3 ()效果图分别为:

           

      

  • 相关阅读:
    搭建Springboot+mybatis+redis+druid
    搭建Springboot+mybatis+redis+druid
    Uber是一部无所不在的数字出行物联网
    Uber是一部无所不在的数字出行物联网
    Uber是一部无所不在的数字出行物联网
    Uber是一部无所不在的数字出行物联网
    详解光伏扶贫模式 参与部门和各扮演的角色
    详解光伏扶贫模式 参与部门和各扮演的角色
    深入解析:从源码窥探MySQL优化器
    如何解决NetBeans9出现java.lang.StackOverflowError问题
  • 原文地址:https://www.cnblogs.com/CMirs/p/14298863.html
Copyright © 2011-2022 走看看