当前位置:   article > 正文

Flutter开发(三)——ListView组件——简单使用、横纵向列表以及动态列表_flutter 横向list

flutter 横向list

首先我先来介绍一哈Icon 

Icon就是图标,Flutter有丰富的Icon库,提供了常用的Icon供开发者选择

  1. import 'package:flutter/material.dart';
  2. void main() {
  3. runApp(new MaterialApp(
  4. home: new MyApp(),
  5. ));
  6. }
  7. class MyApp extends StatelessWidget {
  8. @override
  9. Widget build(BuildContext context) {
  10. return new Scaffold(
  11. appBar: new AppBar(
  12. leading: new IconButton(//title之前是leading
  13. icon: new Icon(Icons.menu),
  14. tooltip: '导航菜单',
  15. onPressed: null,
  16. ),
  17. title: new Text('The word of AppBar'),
  18. actions: <Widget>[//title之后是actions
  19. new IconButton(
  20. icon: new Icon(Icons.search),
  21. tooltip: '搜索',
  22. onPressed: null,
  23. ),
  24. ],
  25. ),
  26. body: new Center(
  27. child: new Text('你好,世界!'),
  28. ),
  29. floatingActionButton: new FloatingActionButton(//浮动的按钮,意思是可以在屏幕中拖动
  30. tooltip: '增加',
  31. child: new Icon(Icons.add),
  32. onPressed: null,
  33. ),
  34. );
  35. }
  36. }

这个AppBar的菜单按钮和搜索按钮就是用的Flutter标准图标库 

 

下面我们来看看ListView的使用叭

先来试试图标+描述列表

  1. import 'package:flutter/material.dart';
  2. void main() => runApp(MyApp());
  3. class MyApp extends StatelessWidget
  4. {
  5. @override
  6. Widget build(BuildContext context)
  7. {
  8. return MaterialApp(
  9. title: '追风者从不认输',
  10. home: Scaffold(
  11. appBar: new AppBar(
  12. title: new Text('roadkiller'),
  13. ),
  14. body: new ListView(//这个东西后面贼有用
  15. children: <Widget>[//这是一个数组,因为列表就是可以装很多组件啊,注意是children:
  16. new ListTile(
  17. leading: new Icon(Icons.add_shopping_cart),
  18. title: new Text('add_shopping_cart'),
  19. ),
  20. new ListTile(
  21. leading: new Icon(Icons.camera_enhance),
  22. title: new Text('camera_enhance'),
  23. ),
  24. new ListTile(
  25. leading: new Icon(Icons.restore),
  26. title: new Text('restore'),
  27. ),
  28. ],
  29. )
  30. ),
  31. );
  32. }
  33. }

 

下面我们来试试图片列表叭

 

搞一个纵向列表,横向列表是同理的

  1. import 'package:flutter/material.dart';
  2. void main() => runApp(MyApp());
  3. class MyApp extends StatelessWidget
  4. {
  5. @override
  6. Widget build(BuildContext context)
  7. {
  8. return MaterialApp(
  9. title: '追风者从不认输',
  10. home: Scaffold(
  11. appBar: new AppBar(
  12. title: new Text('roadkiller'),
  13. ),
  14. body:Center(
  15. child: Container(
  16. width: 200.0,
  17. child: new ListView(
  18. scrollDirection: Axis.vertical,//列表方式是竖直的,水平的话可以写horizontal
  19. children: <Widget>[
  20. new Container(
  21. height: 180.0,
  22. color: Colors.lightBlueAccent,
  23. ),
  24. new Container(
  25. height: 180.0,
  26. color: Colors.amber,
  27. ),
  28. new Container(
  29. height: 180.0,
  30. color: Colors.deepOrangeAccent,
  31. ),
  32. new Container(
  33. height: 180.0,
  34. color: Colors.purpleAccent,
  35. ),
  36. ],
  37. ),
  38. ),
  39. ),
  40. ),
  41. );
  42. }
  43. }

 

 

有没有发现上面的嵌套巨巨巨恶心!

不要慌,我来用用之前学过的Java的继承来减少嵌套

等价代码如下

  1. import 'package:flutter/material.dart';
  2. void main() => runApp(MyApp());
  3. class MyApp extends StatelessWidget
  4. {
  5. @override
  6. Widget build(BuildContext context)
  7. {
  8. return MaterialApp(
  9. title: '追风者从不认输',
  10. home: Scaffold(
  11. appBar: new AppBar(
  12. title: new Text('roadkiller'),
  13. ),
  14. body:Center(
  15. child: Container(
  16. width: 200.0,
  17. child: MyList(),
  18. ),
  19. ),
  20. ),
  21. );
  22. }
  23. }//嵌套少一些了
  24. class MyList extends StatelessWidget{//可以单独把ListView组件写一个类,其实以后无论什么组件都可以的
  25. @override
  26. Widget build(BuildContext context)
  27. {
  28. return ListView(//返回类型写对
  29. scrollDirection: Axis.vertical,//这句话好好理解
  30. children: <Widget>[
  31. new Container(
  32. height: 180.0,
  33. color: Colors.lightBlueAccent,
  34. ),
  35. new Container(
  36. height: 180.0,
  37. color: Colors.amber,
  38. ),
  39. new Container(
  40. height: 180.0,
  41. color: Colors.deepOrangeAccent,
  42. ),
  43. new Container(
  44. height: 180.0,
  45. color: Colors.purpleAccent,
  46. ),
  47. ],
  48. );
  49. }
  50. }

 这个其实是可以拖动的,我自己在电脑上虚拟机拖动挺流畅的,也说明了Flutter这个东西确实不错

 

下面是动态列表 

  1. import 'package:flutter/material.dart';
  2. void main() => runApp(MyApp(
  3. items:new List<String>.generate(100, (i)=>'第${i}个标题')
  4. ));
  5. class MyApp extends StatelessWidget
  6. {
  7. final List<String>items;
  8. MyApp({Key key,@required this.items}):super(key:key);//这儿不熟悉Dart语法还真的不好理解,我也是,@required就是表示这是一个必需参数
  9. @override
  10. Widget build(BuildContext context)
  11. {
  12. return MaterialApp(
  13. title: 'roadkiller',
  14. home: Scaffold(
  15. appBar: new AppBar(
  16. title: new Text('roadkiller'),
  17. ),
  18. body:new ListView.builder(
  19. itemCount: items.length,
  20. itemBuilder: (context,index){
  21. return new ListTile(
  22. title: new Text('${items[index]}'),
  23. );
  24. },
  25. )
  26. ),
  27. );
  28. }
  29. }

可以滑到底端,最后是第99个,符合我们设定的共100个String类型的ListView

 

 

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/2023面试高手/article/detail/289804
推荐阅读
相关标签
  

闽ICP备14008679号