Flutter:动态生成ListTile

666 阅读1分钟

使用自定义方法动态生成ListTile

```
    import 'package:flutter/material.dart';
    import '../../res/ListData.dart';

    class Holiday extends StatelessWidget {

     List<Widget> _getData(){
       var templist = listData.map((item){
         return ListTile(
           title: Text(item["title"]),
           leading: Image.network(item["imageUrl"]),
           subtitle: Text(item["author"]),
         );
       });
      //  print(templist.runtimeType);
      //  注意list类型经过map处理过后返回的是一个MappedListIterable<dynamic, ListTile>类型 需要将其转换为List类型
       return templist.toList();
     }

      @override
      Widget build(BuildContext context) {
        return Scaffold(
          appBar: AppBar(
            title: Text("新闻"),
            centerTitle: true,
          ),
          body: ListView(
            // scrollDirection: Axis.vertical,
            children: this._getData(),
            // reverse: true,
            controller: ScrollController(),
            padding: EdgeInsets.only(left:20,top:20,right:20,bottom:20),

          )
        );
      }
    }

```
  • 使用ListView的builder方法
    	import 'package:flutter/material.dart';
        //import '../../res/ListData.dart';
    
        class Holiday extends StatelessWidget {
    
         List<Widget> list = new List();
         Holiday(){
           for(int i = 0;i<20;i++){
             this.list.add(ListTile(
               title: Text("这是第$i条数据"),
             ));
           }
         }
    
          @override
          Widget build(BuildContext context) {
            return Scaffold(
              appBar: AppBar(
                title: Text("新闻"),
                centerTitle: true,
              ),
              body: ListView.builder(
                itemCount: this.list.length,
                itemBuilder: (context,index){
                  return this.list[index];
                },     
              )
            );
          }
        }
    
    或者
    import 'package:flutter/material.dart';
    //import '../../res/ListData.dart';
    
    class Holiday extends StatelessWidget {
    
     List list = new List();
     Holiday(){
       for(int i = 0;i<20;i++){
         this.list.add("这是第$i条数据");
       }
     }
    
      @override
      Widget build(BuildContext context) {
        return Scaffold(
          appBar: AppBar(
            title: Text("新闻"),
            centerTitle: true,
          ),
          body: ListView.builder(
            itemCount: this.list.length,
            itemBuilder: (context,index){
              return ListTile(
                title: Text(
                  this.list[index]
                )
              );
            },     
          )
        );
      }
    }