目录结构

image.png

main.dart

  1. import 'package:flutter/material.dart';
  2. import './model/Post.dart';
  3. /*
  4. * 导入默认flutter文件中的material,Google公司推荐的规范
  5. * 使用dart语言,多用dart后缀文件名
  6. */
  7. //基本main函数
  8. void main() => runApp(App());
  9. class App extends StatelessWidget {
  10. @override
  11. Widget build(BuildContext context) {
  12. //生成一个Material风格的应用
  13. return MaterialApp(
  14. //关掉右上角debug标志
  15. debugShowCheckedModeBanner: false,
  16. //指定默认加载的部件
  17. home: Home(),
  18. //设置主题
  19. theme: ThemeData(
  20. primarySwatch: Colors.deepOrange,
  21. ));
  22. }
  23. }
  24. //自定义主页面列表部件
  25. class Home extends StatelessWidget {
  26. //构建视图的方法
  27. Widget _listItemBuilder(BuildContext context, int index) {
  28. //容器部件
  29. return Container(
  30. color: Colors.white,
  31. //设置Container外边距,在四周添加8.0
  32. margin: EdgeInsets.all(8.0),
  33. //Column部件E
  34. child: Column(
  35. children: <Widget>[
  36. //图像部件,使用网络引用
  37. Image.network(posts[index].imageUrl),
  38. //部件间间距
  39. SizedBox(height: 16.0),
  40. Text(posts[index].title, style: Theme.of(context).textTheme.title),
  41. SizedBox(
  42. height: 16.0,
  43. ),
  44. Text(posts[index].author, style: Theme.of(context).textTheme.subhead),
  45. SizedBox(
  46. height: 16.0,
  47. ),
  48. ],
  49. ),
  50. );
  51. }
  52. //作为方法返回的
  53. @override
  54. Widget build(BuildContext context) {
  55. //提供一个界面基本结构,顶部工具栏,标签,底部导航栏等
  56. return Scaffold(
  57. //设置背景颜色
  58. backgroundColor: Colors.grey[100],
  59. // 顶部工具栏
  60. appBar: AppBar(
  61. //添加页面标题
  62. title: Text('gaox'),
  63. elevation: 0.0,
  64. ),
  65. //主体内容:加上一个列表视图
  66. body: ListView.builder(
  67. itemCount: posts.length,
  68. itemBuilder: _listItemBuilder,
  69. ));
  70. }
  71. }
  72. class FirstPage extends StatelessWidget {
  73. @override
  74. Widget build(BuildContext context) {
  75. return Center(
  76. child: Text(
  77. 'hello\n net',
  78. //设置文字阅读方向
  79. textDirection: TextDirection.ltr,
  80. //定制文字样式
  81. style: TextStyle(
  82. //设置颜色
  83. color: Colors.black87,
  84. //设置文字颜色
  85. fontSize: 80,
  86. //设置文字样式
  87. fontWeight: FontWeight.bold,
  88. ),
  89. ),
  90. );
  91. }
  92. }

post.dart

  1. class Post {
  2. const Post({
  3. this.title,
  4. this.author,
  5. this.imageUrl,
  6. });
  7. final String title;
  8. final String author;
  9. final String imageUrl;
  10. }
  11. final List<Post> posts = [
  12. Post(
  13. title: 'first',
  14. author: 'gaox',
  15. imageUrl: 'http://p0.so.qhimgs1.com/bdr/720__/t011ba6d48745e60340.jpg',
  16. ),Post(
  17. title: 'second',
  18. author: 'gaoxizhi',
  19. imageUrl: 'http://p0.so.qhimgs1.com/bdr/790__/t017632d9ebb249e2ba.jpg',
  20. ),Post(
  21. title: 'thirdly',
  22. author: 'heia',
  23. imageUrl: 'http://p2.so.qhimgs1.com/bdr/921__/t0145f2481a8b35382e.jpg',
  24. ),
  25. ];

页面效果

image.png