3-4ImageWidget图片组件讲解

import 'package:flutter/material.dart';void main() => runApp(MyApp());//Image.asset:加载资源图片,会使打包时包体过大//Image.network:网络资源图片,经常换的或者动态的图片//image.file:本地图片,比如相机照像后的图片预览//image.memory:加载到内存中的图片,Uint8Listclass MyApp extends StatelessWidget {  @override  Widget build(BuildContext context) {    return MaterialApp(      title: 'TextWidget',      home: Scaffold(        appBar: AppBar(title: Text('TextWidget')),        body: Center(            child: Container(          child: new Image.network(            'https://img1.mukewang.com/szimg/5ef018f808c6394c06000338-360-202.jpg',//                缩放 值越大图片越小            scale: 1.5,//                图片充满容器 有可能被拉伸//                fit: BoxFit.fill,//              图片保持原比例 宽或高最大//                fit: BoxFit.contain,//           图片可能被裁切 充满容器 保持原比例 工作中非常实用 fitWidth:横向是充满的纵向可能被裁切或拉伸 fitHeight  scaleDown:图片大于容器//                fit: BoxFit.cover,//               图片混合模式美工会给            //              color: Colors.amber,//               colorBlendMode: BlendMode.colorBurn,//              图片重复 repeatX横向Y纵向            repeat: ImageRepeat.repeat,          ),          width: 300.0,          height: 200.0,          color: Colors.amber,        )),      ),    );  }}

3-5ListViewWidget列表组件讲解

1.列表瓦片

import 'package:flutter/material.dart';//void是没有返回值的void main() => runApp(MyApp());//定义一个widgetclass MyApp extends StatelessWidget {//  重写build方法  @override//  上下文参数  Widget build(BuildContext context) {    return MaterialApp(      title: 'TextWidget',      home: Scaffold(          appBar: AppBar(title: Text('TextWidget')),          body: new ListView(//          返回的是一个数组            children: <Widget>[//            列表瓦片              new ListTile(// 最主要的 flutter提供给我们的icon组件                leading: new Icon(Icons.accessibility),//  图标加文字                title: new Text(                  'border_right',                ),              ),              new ListTile(// 最主要的 flutter提供给我们的icon组件                leading: new Icon(Icons.accessibility),//  图标加文字                title: new Text(                  'border_right',                ),              ),              new ListTile(// 最主要的 flutter提供给我们的icon组件                leading: new Icon(Icons.repeat),//  图标加文字                title: new Text(                  'border_right',                ),              ),              new ListTile(// 最主要的 flutter提供给我们的icon组件                leading: new Icon(Icons.access_alarm),//  图标加文字                title: new Text(                  'border_right',                ),              )            ],          )),    );  }}

2.图片列表

import 'package:flutter/material.dart';//void是没有返回值的void main() => runApp(MyApp());//定义一个widgetclass MyApp extends StatelessWidget {//  重写build方法  @override//  上下文参数  Widget build(BuildContext context) {    return MaterialApp(      title: 'TextWidget',      home: Scaffold(          appBar: AppBar(title: Text('TextWidget')),          body: new ListView(//          返回的是一个数组            children: <Widget>[              new Image.network(                  'https://img1.mukewang.com/szimg/5ee0782708609a8506000338-360-202.jpg'),              new Image.network(                  'https://img1.mukewang.com/szimg/5ed0dcff0984b5c812000676-360-202.png'),              new Image.network(                  'https://img1.mukewang.com/szimg/5ee0782708609a8506000338-360-202.jpg'),            ],          )),    );  }}

3-6横向列表的使用

1.横向列表原始代码

import 'package:flutter/material.dart';//void是没有返回值的void main() => runApp(MyApp());//定义一个widgetclass MyApp extends StatelessWidget {//  重写build方法  @override//  上下文参数  Widget build(BuildContext context) {    return MaterialApp(      title: 'TextWidget',      home: Scaffold(          appBar: AppBar(title: Text('TextWidget')),          body: Center(            child: Container(              height: 200.0,              child: new ListView(//                横向滚动                scrollDirection: Axis.horizontal,                children: <Widget>[                  new Container(                    width: 180.0,                    color: Colors.amber,                  ),                  new Container(                    width: 180.0,                    color: Colors.purple,                  ),                  new Container(                    width: 180.0,                    color: Colors.lightGreen,                  ),                  new Container(                    width: 180.0,                    color: Colors.black12,                  ),                ],              ),            ),          )),    );  }}

2横向列表优化代码

import 'package:flutter/material.dart';//void是没有返回值的void main() => runApp(MyApp());//定义一个widgetclass MyApp extends StatelessWidget {//  重写build方法  @override//  上下文参数  Widget build(BuildContext context) {    return MaterialApp(      title: 'TextWidget',      home: Scaffold(          appBar: AppBar(title: Text('TextWidget')),          body: Center(            child: Container(                height: 200.0,//              调用mylist组件                child: Mylist()),          )),    );  }}//mylist组件分解出来class Mylist extends StatelessWidget {  @override  Widget build(BuildContext context) {    return ListView(      //                横向滚动      scrollDirection: Axis.horizontal,      children: <Widget>[        new Container(          width: 180.0,          color: Colors.amber,        ),        new Container(          width: 180.0,          color: Colors.purple,        ),        new Container(          width: 180.0,          color: Colors.lightGreen,        ),        new Container(          width: 180.0,          color: Colors.black12,        ),      ],    );  }}

3-7动态列表的使用

import 'package:flutter/material.dart';//void是没有返回值的 主方法调用MyApp 所以在此处传递数据void main() => runApp(MyApp(//  List()非固定长度 List(3)长度为3 List<String>()指定类型 [1,2,3]直接赋值 $i下标//generate生成器 有两个参数1.是声明长度 (i)每一个循环的参数 单个循环的内容    items: new List<String>.generate(1000, (i) => 'item $i')));//定义一个widgetclass MyApp extends StatelessWidget {  final List<String> items;//  构造方法 默认参数为key主键直接带上 调用父类  MyApp({Key key, @required this.items}) : super(key: key);//  重写build方法  @override//  上下文参数  Widget build(BuildContext context) {    return MaterialApp(      title: 'TextWidget',      home: Scaffold(          appBar: AppBar(title: Text('TextWidget')),          body: new ListView.builder(            itemCount: items.length,//            上下文和索引            itemBuilder: (context, index) {              return new ListTile(title: new Text('${items[index]}'));            },          )),    );  }}