Flutter 基础(二)基本组件ListView
  J3FDo7fyZmR7 2023年11月02日 52 0


ListView

Flutter 中的ListView相当于Android中的Scrollview也相当于Android中的ListView。

常用属性

children: []
scrollDirection: Axis.horizontal, //滑动方向

基础Demo

学习点:ListTile及scrollDirection

Flutter 基础(二)基本组件ListView_ico

import 'package:flutter/material.dart';

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

class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return MaterialApp(
title: "ListView",
home: Scaffold(
appBar: AppBar(
title: new Text("ListViewDemo"),
),
body: MyListViewHorizontal()),
);
}
}

class MyListViewVertical extends StatelessWidget {
@override
Widget build(BuildContext context) {
return new ListView(
children: getWidgets(),
// <Widget>[
// new ListTile(
// leading: new Icon(Icons.access_alarm),
// title: new Text("access_alarm"),
// ),
// new ListTile(
// leading: new Icon(Icons.access_time),
// title: new Text("access_time"),
// ),
// new ListTile(
// leading: new Icon(Icons.accessibility_new),
// title: new Text("accessibility_new"),
// ),
// ],
);
}

List<Widget> getWidgets() {
List<Widget> widgets = new List();
for (int i = 0; i < 10; i++) {
widgets.add(new ListTile(
leading: new Icon(Icons.access_alarm),
title: new Text("access_alarm"),
));
widgets.add(new ListTile(
leading: new Icon(Icons.access_time),
title: new Text("access_time"),
));
widgets.add(new ListTile(
leading: new Icon(Icons.accessibility_new),
title: new Text("accessibility_new"),
));
}
return widgets;
}
}

class MyListViewHorizontal extends StatelessWidget {
@override
Widget build(BuildContext context) {
return new Center(
child: new Container(
height: 200,
child: new ListView(
scrollDirection: Axis.horizontal,
children: getWidgets(),
),
));
}

List<Widget> getWidgets() {
List<Widget> widgets = new List();
for (int i = 0; i < 10; i++) {
widgets.add(new Container(
color: Colors.blue,
width: 200,
));
widgets.add(new Container(
color: Colors.yellow,
width: 200,
));
widgets.add(new Container(
color: Colors.red,
width: 200,
));
}
return widgets;
}
}

进阶Demo

学习点:
1、动态ListView 使用ListView.Builder 创建,常用属性:​​​itemCount: items.length, itemBuilder: (context,index){}​​ 2、组件传递参数 其中组件构造器中的Key key是默认的参数必须写的,其他参数当为必须传递的参数时需要添加@required

import 'package:flutter/material.dart';

void main() => runApp(MyApp(
items: new List<String>.generate(100, (i) => "Item $i"),
));

class MyApp extends StatelessWidget {
final List<String> items;

MyApp({Key key, @required this.items}) : super(key: key);

@override
Widget build(BuildContext context) {
return new MaterialApp(
title: "ListView",
home: new Scaffold(
appBar: AppBar(
title: new Text("ListView Dynamic"),
),
body: new ListView.builder(
itemCount: items.length,
itemBuilder: (context,index){
return new ListTile(
title: new Text("${items[index]}"),
);
},
),
),
);
}
}


【版权声明】本文内容来自摩杜云社区用户原创、第三方投稿、转载,内容版权归原作者所有。本网站的目的在于传递更多信息,不拥有版权,亦不承担相应法律责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@moduyun.com

  1. 分享:
最后一次编辑于 2023年11月08日 0

暂无评论

推荐阅读
  4koL3J55wyKx   2023年11月13日   30   0   0 icogitCentOS
  b1UHV4WKBb2S   2023年11月13日   32   0   0 ide抗锯齿
  b1UHV4WKBb2S   2023年11月13日   30   0   0 裁剪ideflutter
  b1UHV4WKBb2S   2023年11月13日   22   0   0 flutterDart
  zSWNgACtCQuP   2023年11月13日   27   0   0 ide
J3FDo7fyZmR7