今天是2023年4月24日
今天重新复习了一下关于ListView的内容,现在就重新整理一下关于ListView的内容和理解
:
(1)ListView和Column之间有什么区别?
在我理解中ListView和Column都是可以有很多子组件的组件,它们之间区别在于它们排列的形式和
是否可以滑动:
[1].ListView:ListView是一个本身就支持滑动的组件,且排列方式可以是垂直也可以是水平。它的子组件通常是通过一个数据源(如数组)来生成的,每个子组件都是相互独立的。
[2].Column:Column是一个本身并不支持滑动的组件(在不使用其他组件的前提下),排列只能是垂直排列,它的子组件是一个有序的列表,每个子组件都是相对于父组件的位置来确定的。
(2)提供一个ListView的例子并且使用到ListTile和Divide
import 'package:flutter/material.dart';
//这里使用一个比较简单的例子完成
void main() => runApp(MaterialApp(home: Scaffold(body: ListView(children: [ListTile(leading: Text("文本"),title: Text("文本1"),subtitle: Text("文本2"),trailing: Text("文本3"),),Divider(color: Colors.blue,thickness: 2, //线的宽度indent: 12, //前面的边距endIndent: 12, //后面的边距height: 20, //调整位置),],),),),);
运行效果为:
(3)图文列表,一张图片一段文本(一次类推)
import 'package:flutter/material.dart';void main() => runApp(MaterialApp(home: Scaffold(body: ListView(//这里采用的是ListView中使用for循环来完成渲染内容的操作children: [for (var a = 0; a < 10; a++)Column(children: [SizedBox(width: 200,height: 400,child: Image.network("https://tse1-mm.cn.bing.net/th/id/OIP-C.SetpVlIiIa4eLD4cQxHuvAHaNK?pid=ImgDet&w=1080&h=1920&rs=1",fit: BoxFit.fitHeight,),),Text("这是一张网络图片")],),],),),),);
效果图:
(4)常量构造函数能不能加函数体?
class Person {const Person() {}//报红
}常量函数是不能添加函数体的,因为常量函数成员不可变,如果你加了函数体,则说明有可能改变成员值,
这是不被认可的操作,所以实际上如果你给常量构造函数添加函数体,会出现提示:
Const constructors can't have a body.
构造函数不能有主体
(5)使用一下ListView中的builder
import 'package:flutter/material.dart';void main() => runApp(MaterialApp(home: Scaffold(body: ListView.builder(itemCount: 10,itemBuilder: (BuildContext context, int index) {//然后这里提一下几乎人人都知道的内容,如果在ListView中的你给子组件的大小//不管用可以看看是否给它添加了位置组件,return Center(child: Container(decoration: BoxDecoration(border: Border.all(color: Colors.blue),color: Colors.black),width: 100,height: 100,),);},),),));
运行效果
(6)什么情况下,会提示要给成员变量加一个late? 为什么要建议加上late,是哪一个规则决定的?
在使用Dart编程语言时,如果成员变量在声明时没有被初始化,而且在构造函数中也没有被赋值,那么编译器会提示将该变量声明为late。
建议加上late是为了避免在访问该变量之前出现空指针异常。这是因为Dart在运行时要求所有变量必须被初始化,否则编译器会在编译时报错。
将变量声明为late后,编译器会在运行时进行检查,如果变量没有被初始化,则会抛出一个异常。
这个规则是在Dart语言规范中定义的。在Dart中,late是一个关键字,用于声明成员变量为“延迟初始化”。