当前位置: 首页 > wzjs >正文

phpmysql网站开发实例经典广告推广词

phpmysql网站开发实例,经典广告推广词,wordpress 中文安装教程,做网站大概要多少钱目录 一、ListView构造方法1.1 常规方法1.2 ListView.builder1.3 ListView.separated 二、自定义ListView样式和布局:三、ListView性能优化:总结: 一、ListView构造方法 主要以下几种方法: 常规方法,直接使用默认的构…

目录

  • 一、ListView构造方法
    • 1.1 常规方法
    • 1.2 ListView.builder
    • 1.3 ListView.separated
  • 二、自定义ListView样式和布局:
  • 三、ListView性能优化:
  • 总结:

一、ListView构造方法

主要以下几种方法:

  • 常规方法,直接使用默认的构造方法
  • ListView.builder
  • ListView.separated

1.1 常规方法

ListView的常规方法:就是利用默认方法构造各个item,ListView有个children属性:传入多个widget:

import 'package:flutter/material.dart';main(List<String> args) {runApp(const MyApp());
}class MyApp extends StatelessWidget {// This widget is the root of your application.Widget build(BuildContext context) {const title = 'ListView的使用';return MaterialApp(debugShowCheckedModeBanner: false,title: title,theme: ThemeData(colorScheme: ColorScheme.fromSeed(seedColor: Colors.deepPurple),useMaterial3: true,),home: Scaffold(appBar: AppBar(title: const Text(title),),body:MyHomeBody(),);}
}class MyHomeBody extends StatelessWidget {const MyHomeBody({super.key});final TextStyle textStyle = const TextStyle(fontSize: 10, color: Colors.blue);Widget build(BuildContext context) {return  ListView(children: List<Widget>.generate(100, (i) => Text('列表 $i')),);}
}

运行效果图如下:

常规方法

1.2 ListView.builder

List<Widget>.generate 会默认把所有子item全部创建出来,如果子item数量过多时,会影响页面的渲染时间,ListView.builder不会把所有子item创建出来,会在真正需要的时候构建出来,不会一开始全部初始化出来,适合数量很多item的场景:

void main() {runApp(MyApp(items: List<String>.generate(10000, (i) => '列表 $i'),),);
}class MyApp extends StatelessWidget {final List<String> items;const MyApp({super.key, required this.items});// This widget is the root of your application.Widget build(BuildContext context) {const title = 'ListView的使用';return MaterialApp(debugShowCheckedModeBanner: false,title: title,theme: ThemeData(colorScheme: ColorScheme.fromSeed(seedColor: Colors.deepPurple),useMaterial3: true,),home: Scaffold(appBar: AppBar(title: const Text(title),),body:ListView.builder(itemCount: items.length,prototypeItem: ListTile(title: Text(items.first),),itemBuilder: (context, index) {return ListTile(title: Text(items[index]),);},),);}
}

运行效果图如下:
ListView.builder

1.3 ListView.separated

ListVIew.separated相比ListView.builder只是每项之间增加了一个分割符合:

void main() {runApp(MyApp(items: List<String>.generate(10000, (i) => '列表 $i'),),);
}class MyApp extends StatelessWidget {final List<String> items;const MyApp({super.key, required this.items});// This widget is the root of your application.Widget build(BuildContext context) {const title = 'ListView的使用';return MaterialApp(debugShowCheckedModeBanner: false,title: title,theme: ThemeData(colorScheme: ColorScheme.fromSeed(seedColor: Colors.deepPurple),useMaterial3: true,),home: Scaffold(appBar: AppBar(title: const Text(title),),body:ListView.separated(itemCount: items.length,separatorBuilder: (context, index) => const Divider(),itemBuilder: (context, index) {return ListTile(title: Text(items[index]),);},),);}
}

运行效果图如下:
ListView.separated


二、自定义ListView样式和布局:

我们可以使用ListView.builder的itemBuilder属性来自定义列表项的样式和布局,下面一个例子是动态设置item布局背景

void main() {runApp(MyApp(items: List<String>.generate(10000, (i) => '列表 $i'),),);
}class MyApp extends StatelessWidget {final List<String> items;const MyApp({super.key, required this.items});// This widget is the root of your application.Widget build(BuildContext context) {const title = 'ListView的使用';return MaterialApp(debugShowCheckedModeBanner: false,title: title,theme: ThemeData(colorScheme: ColorScheme.fromSeed(seedColor: Colors.deepPurple),useMaterial3: true,),home: Scaffold(appBar: AppBar(title: const Text(title),),body:ListView.builder(itemCount: items.length,itemBuilder: (context, index) {return Container(color: index % 2 == 0 ? Colors.grey[300] : Colors.red,padding: const EdgeInsets.all(16),child: Text(items[index]),);},),),);

运行效果图如下:
自定义布局和样式


三、ListView性能优化:

当使用ListView显示大量数据时,为了提高性能,推荐以下优化方式:

  1. 使用ListView.builder或ListView.separated来按需构建列表项,避免一次性构建所有的项。
  2. 使用ListView.separated并提供合适的分隔符构建方法,避免不必要的分隔符构建。
  3. 如果列表项固定是高度,请使用itemExtent属性来指定项的高度,避免动态计算高度带来的性能开销。
  4. 使用ScrollController来控制滚动,并使用addPostFrameCallback在构建完成后延迟加载数据。

总结:

上文我们介绍构建ListView常见的几种使用方法,以及简单的自定义布局和样式方法的例子,优化ListView性能方式方法,使用ListView推荐使用ListView.builder、ListView.separated。
Thanks:
Flutter可滚动组件(2):ListView基本使用

http://www.dtcms.com/wzjs/357515.html

相关文章:

  • 一个网站的成本重庆seo什么意思
  • 淮南网站建设好seo的定义是什么
  • 三合一网站建设多少钱公司做网站怎么做
  • 信息管理网站开发实验体会app推广赚钱平台
  • 网站列表页怎么做的品牌运营
  • 微信公众号做电影网站要域名吗电商seo是指
  • 网站如何做线下推广百度seo怎么提高排名
  • 网站建设技术合同模板下载免费网络推广网址
  • 网站怎么做国际化发软文是什么意思
  • 青岛市疫情最新情况地图重庆seo职位
  • 做进化树的在线网站seo能干一辈子吗
  • 这几年做哪些网站致富江门关键词排名优化
  • 网站建设店铺介绍怎么写百度公司的业务范围
  • 简单好看的版面设计图衡水seo优化
  • 购物网站用那个软件做小红书推广方式
  • 青岛网站建设找润商品牌网站建设解决方案
  • 无锡网络公司无锡网站制作seo推广知识
  • ip动态地址做网站网站设计方案模板
  • 南阳做网站优化山东网络优化公司排名
  • 电子商务网站建设与规划信息流广告投放公司
  • 找合伙人的网站做淘宝引流推广方法
  • 成都网站的优化如何线上推广引流
  • 广告设计公司品牌设计南宁seo收费
  • 一个人做网站赚钱山东进一步优化
  • 昆明网站建设锐网郑州seo管理
  • web网站开发需要什么软件奉化seo页面优化外包
  • zblog做微网站百度推广登录平台官网
  • 开锁换锁做网站优化网站推广教程整站
  • 天津本地网站如何推广网上国网
  • 枞阳做网站的西安网站seo价格