Flutter——listview的三种加载方式

main.dart

import 'package:flutter/material.dart';
import 'SwipeToDissmissDemo.dart';

void main() => runApp(MyApp());

class MyApp extends StatelessWidget {
    @override
    Widget build(BuildContext context) {
        // TODO: implement build
        return MaterialApp(
            title: "我的列表",
            theme: ThemeData.light(),
            home: SwipeToDissmissDemo(),
        );
    }
}

SwipeToDissmissDemo.dart

import 'package:flutter/material.dart';

class SwipeToDissmissDemo extends StatefulWidget {
    @override
    State<StatefulWidget> createState() {
        // TODO: implement createState
        return new _SwipeToDissmissState();
    }
}

class _SwipeToDissmissState extends State<SwipeToDissmissDemo> {
    List<String> list = List.generate(20, (index) => "我的列表 $index 元素");

    @override
    Widget build(BuildContext context) {
        // TODO: implement build
        return Scaffold(
            appBar: AppBar(
                title: Text('我的列表'),
            ),
            body: ListView.builder(
                itemCount: list.length,
                itemBuilder: (context, index) {
                    return Dismissible(
                        key: Key(list[index]),
                        direction: DismissDirection.endToStart,
                        child: ListTile(title: Text('${list[index]}')),
                        background: Container(
                            color: Colors.redAccent,
                        ),
                        onDismissed: (direction) {
                            setState(() {
                            Scaffold.of(context)
                                .showSnackBar(SnackBar(content: Text("${list[index]}")));
                            list.removeAt(index);
                            });
                        },
                    );
                },
            )
        );
    }
}

在这里插入图片描述

ListView的三种加载方式
1、ListTitle
2、List.generate一次性加载所有
3、ListView.builder不是一次性加载所有、懒加载

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('listview'),
                ),
                //不是一次性加载,懒加载
                body: ListView.builder(
                    itemCount: 100,
                    itemBuilder: (context, index) {
                        print('$index');
                        //奇数
                        if (index.isOdd) {
                        return Divider();
                        }
                        return ListTile(
                        leading: Icon(Icons.title),
                        title: Text('$index' + 'favorite_border'),
                        subtitle: Text('1111'),
                        trailing: Icon(Icons.arrow_right),
                        );
                    })
                //右键->refector-extract->widget或method
                //HorizontalListViewWidget()
                //NormalListView()
                ),
            );
    }

    ListView NormalListView() {
        return ListView(
            children: <Widget>[
                ListTile(
                    leading: Icon(Icons.title),
                    title: Text('favorite_border'),
                    subtitle: Text('1111'),
                    trailing: Icon(Icons.arrow_right),
                ),
                Divider(),
                ListTile(
                    leading: Icon(Icons.title),
                    title: Text('favorite_border'),
                    subtitle: Text('1111'),
                    trailing: Icon(Icons.arrow_right),
                ),
                Divider(),
                ListTile(
                    leading: Icon(Icons.title),
                    title: Text('favorite_border'),
                    subtitle: Text('1111'),
                    trailing: Icon(Icons.arrow_right),
                ),
                Divider(),
                ListTile(
                    leading: Icon(Icons.title),
                    title: Text('favorite_border'),
                    subtitle: Text('1111'),
                    trailing: Icon(Icons.arrow_right),
                ),
            ],
        );
    }
}

class HorizontalListViewWidget extends StatelessWidget {
    const HorizontalListViewWidget({
        Key key,
    }) : super(key: key);

    @override
    Widget build(BuildContext context) {
        return ListView(
            scrollDirection: Axis.horizontal,
            //一次性加载所有
            children: List.generate(50, (index) {
                return Text(
                    '$index',
                    style: TextStyle(fontSize: 20),
                );
            }),
        );
    }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值