• Flutter ListView 列表组件


    列表常见的情况:
    1、垂直列表

    2、垂直图文列表

    3、横向列表

    4、动态列表

    名称

    类型

    说明

    scrollDirection
    

    Axis

    Axis.horizontal 横向列表 Axis.vertical 垂直列表(默认垂直列表)

    padding

    EdgeInsetsGeometry
    

    内边距

    resolve

    bool

    组件反向排序

    children

     

    List<Widget>
     
     
    列表元素

     

    Flutter 基本列表

    import 'package:flutter/material.dart';
    
    void main() {
      runApp(MyApp());
    }
    
    class MyApp extends StatelessWidget {
      @override
      Widget build(BuildContext context) {
        return MaterialApp(
            home: Scaffold(
                appBar: AppBar(title: Text("flutter demo")), body: HomeContent()));
      }
    }
    
    class HomeContent extends StatelessWidget {
      @override
      Widget build(BuildContext context) {
        return Center(
          child: ListView(
            children: <Widget>[
              ListTile(
                leading: Icon(Icons.phone),
                title: Text(
                  "this is title",
                  style: TextStyle(fontSize: 28.0),
                ),
                subtitle: Text('this is subtitle '),
              ),
              ListTile(
                title: Text("this is title"),
                subtitle: Text('this is subtitle '),
                trailing: Icon(Icons.phone),
              ),
              ListTile(
                title: Text("this is title"),
                subtitle: Text('this is subtitle '),
              ),
              ListTile(
                title: Text("this is title"),
                subtitle: Text('this is subtitle'),
              ),
              ListTile(
                title: Text("this is title"),
                subtitle: Text('this is subtitle'),
              )
            ],
          ),
        );
      }
    }

    图表列表

    body: new ListView(
      children:<Widget>[
       new Image.network(
          'http://127.0.0.1:8080/imgs/a.jpg'
        )
         new Image.network(
           'http://127.0.0.1:8080/imgs/b.jpg'
        )
         new Image.network(
           'http://127.0.0.1:8080/imgs/c.jpg'
        ),new Image.network(
         'http://127.0.0.1:8080/imgs/d.jpg'
        )
        
      ]
    ),

    横向列表

    import 'package:flutter/material.dart';
    
    void main() {
      runApp(MyApp());
    }
    
    class MyApp extends StatelessWidget {
      @override
      Widget build(BuildContext context) {
        return MaterialApp(
            home: Scaffold(
                appBar: AppBar(title: Text("flutter demo")), body: HomeContent()));
      }
    }
    
    class HomeContent extends StatelessWidget {
      @override
      Widget build(BuildContext context) {
        return Container(
            height: 200.0,
            margin: EdgeInsets.all(5),
            child: ListView(
              scrollDirection: Axis.horizontal,
              children: <Widget>[
                Container(
                   180.0,
                  color: Colors.lightBlue,
                ),
                Container(
                   180.0,
                  color: Colors.amber,
                  child: ListView(
                    children: <Widget>[
                      Image.network(
                          'http://127.0.0.1:8080/images/ca.jpg'),
                      SizedBox(height: 16.0),
                      Text(
                        '这是一个文本信息',
                        textAlign: TextAlign.center,
                        style: TextStyle(fontSize: 16.0),
                      )
                    ],
                  ),
                ),
                Container(
                   180.0,
                  color: Colors.deepOrange,
                ),
                Container(
                   180.0,
                  color: Colors.deepPurpleAccent,
                ),
              ],
            ));
      }
    }

    动态列表的使用

    List类型的使用

    List是Dart的集合类型之一,其实你可以把它简单理解为数组(反正我是这么认为的),其他语言也都有这个类型。它的声明有几种方式:

    • var myList = List(): 非固定长度的声明。
    • var myList = List(2): 固定长度的声明。
    • var myList= List<String>():固定类型的声明方式。
    • var myList = [1,2,3]: 对List直接赋值。

    那我们这里使用的是一个List传递,然后直接用List中的generate方法进行生产List里的元素。最后的结果是生产了一个带值的List变量。代码如下:

    void main () => runApp(MyApp(
      items: new List<String>.generate(1000, (i)=> "Item $i")
    ));
    说明:再main函数的runApp中调用了MyApp类,再使用类的使用传递了一个items参数,并使用generate生成器对items进行赋值。
    
    generate方法传递两个参数,第一个参数是生成的个数,第二个是方法。
    #

    接受参数

    传递了参数,那MyApp类是需要接收的:

    inal List<String> items;
     MyApp({Key key, @required this.items}):super(key:key);

    构造函数,除了Key,增加了一个必传参数,@required意思就必传。:super如果父类没有无名无参数的默认构造函数,则子类必须手动调用一个父类构造函数。

    事先进行声明,这样我们就OK了。

    import 'package:flutter/material.dart';
    void main () => runApp(MyApp(
      items: new List<String>.generate(1000, (i)=> "Item $i")
    ));
    
    class MyApp extends StatelessWidget{
    
      List<String> items;
      MyApp({Key key, @required this.items}):super(key:key);
      @override
      Widget build(BuildContext context ){
          return MaterialApp(
            title:'ListView widget',
            home:Scaffold(
              body:new ListView.builder(
                itemCount:items.length,
                itemBuilder:(context,index){
                  return new ListTile(
                    title:new Text('${items[index]}'),
                  );
                }
              )
            ),
          );
      }
    }

     

  • 相关阅读:
    C++ UFT-8和GB2312间的转换
    ssh不输入密码
    thinkpad T480安装WIN7
    删除目录下的不规则文件
    使用组合的方式来创建新类, 并可以重新定制某些类的特定行为
    使用gradle 编译生成 apk出现的问题
    android studio 使用 SVN
    Fiddler 抓取 Genymotion 数据包
    在eclipse中查看android源代码
    计算 md5
  • 原文地址:https://www.cnblogs.com/loaderman/p/11156348.html
Copyright © 2020-2023  润新知