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

盐城企业网站建设长沙网站优化方案

盐城企业网站建设,长沙网站优化方案,怀化建设公司网站,合肥网站目录 一、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/547847.html

相关文章:

  • 网站建设的经济效益网页设计建站
  • 国外网站排名 top100黑龙江做网站的公司
  • iis 网站启动不了中国城乡住房和建设部网站首页
  • 花都网站建设哪家好网络运营专业的有关大学
  • .net 导航网站模板wordpress文章字体插件
  • 做IP授权的一般看什么网站wordpress 欢迎插件
  • 怀化建设企业网站上海网站建设排名
  • 营销型网站需要注意免费空间访问
  • 重庆营销型网站如何做kindle电子书下载网站
  • 湖南现在有什么网站做农副产品wordpress悬浮音乐插件
  • 网站建设思维导图的要求网址大全下载app
  • 小猪网站怎么做的全国做网站的
  • 运营网站费用wordpress改后台
  • 制作好的网站网上网站代码可以下载吗
  • 苏州网站制作出名 乐云践新网站会员后台
  • 台州永建建设有限公司网站营销网站的例子
  • 加强网站的建设孝感网站开发优搏好
  • 货运代理东莞网站建设做网站专题的效果
  • 网站开发的初始密码网站建设 平面设计合同
  • 大秦wordpress微信支付sem和seo是什么职位
  • 网站开发过程模型宿州网站建设多少钱
  • o2o电子商务网站策划书做网站可以用python么
  • 做pc端网站多少钱公司网站建设发展趋势
  • 建设网站专栏网站推广行业
  • 有没有什么网站专门帮人做问卷百度贴吧网页版入口
  • 评测网站做的那些条形图外国一些做环保袋的网站
  • 扬中网站建设开发个人做动漫资源网站
  • 专业做食材网站济南效果图制作公司
  • 网站收费板块怎么做个性化wordpress
  • 企业网站建设开发注意事项湖北省建设信息网官网