美文网首页
Flutter学习笔记

Flutter学习笔记

作者: 我是小矿工 | 来源:发表于2018-12-26 18:07 被阅读0次

    学习flutter应该也有一个多星期了,感觉到了一个节点,所以准备吧之前学习的做个整理。

    环境配置安装这个网上一大推,我就不说了。我这的基础文章主要包含 text,container ,imageview, listview ,gridview ,card ,row ,column, stack, raiseButton, 到页面的跳转,传参, 关闭上个界面, 返回数据的基本用法。想看效果的直接复制下来代码然后改FirstPage(),改成对应的view


    image.png
    import 'package:flutter/material.dart';
    
    void main() => runApp(MyApp(items: new List.generate(100, (i) => 'item $i')));
    
    class MyApp extends StatelessWidget {
      // This widget is the root of your application.
      final List items;
    
      MyApp({Key key, @required this.items}) : super(key: key);
    
      @override
      Widget build(BuildContext context) {
        var card = new Card(
          child: Column(
            children: <Widget>[
              ListTile(
                title: Text('aaaaaaaaaaaa'),
                subtitle: Text('azzzzzzzz'),
                leading: Icon(
                  Icons.ac_unit,
                  color: Colors.red,
                ),
              ),
              new Divider(),
              ListTile(
                title: Text('bbbbbbbb'),
                subtitle: Text('bccccccccccz'),
                leading: Icon(
                  Icons.ac_unit,
                  color: Colors.yellow,
                ),
              ),
            ],
          ),
        );
    
        var container = new Container(
          child: Text(
            'aaaaaaaa',
            style: TextStyle(fontSize: 20.3, color: Colors.yellow),
          ),
          //color: Colors.red,
          width: 400.0,
          height: 200.8,
          //alignment: Alignment.centerRight, //内部对齐方式
          //padding: EdgeInsets.all(10),//padding
          padding: EdgeInsets.fromLTRB(10, 5, 3, 1),
          margin: EdgeInsets.all(10),
          decoration: new BoxDecoration(
              //加个渐变
              gradient:
                  LinearGradient(colors: [Colors.red, Colors.yellow, Colors.black]),
              border: Border.all(width: 2.9, color: Colors.black)),
        );
    
        var image = new Image.network(
          'https://timgsa.baidu.com/timg?image&quality=80&size=b9999_10000&sec=1545804531737&di=6c62b256f7e9edba267d80ab7541a427&imgtype=0&src=http%3A%2F%2Fimgsrc.baidu.com%2Fimage%2Fc0%253Dshijue1%252C0%252C0%252C294%252C40%2Fsign%3D4af020d471cb0a46912f837a030a9c51%2Ff31fbe096b63f6242d63fb2d8d44ebf81a4ca3e6.jpg',
          // fit: BoxFit.cover,
          color: Colors.yellow, // 和下面的属性两个连起来 设置图片的颜色属性
          colorBlendMode: BlendMode.colorDodge,
          repeat: ImageRepeat.repeatX,
        );
    
        var listview = new ListView(
          scrollDirection: Axis.vertical,
          children: <Widget>[
            ListTile(
              leading: new Icon(Icons.ac_unit), //图标
              title: Text('listview1'),
            ),
            ListTile(
              leading: new Icon(Icons.ac_unit), //图标
              title: Text('listview2'),
            ),
            ListTile(
              leading: new Icon(Icons.ac_unit), //图标
              title: Text('listview3'),
            ),
          ],
        );
    
        var listview1 = new Container(
            height: 200.9,
            child: new ListView(
              scrollDirection: Axis.horizontal,
              children: <Widget>[
                new Container(
                  color: Colors.yellow,
                  width: 180.8,
                ),
                new Container(
                  color: Colors.red,
                  width: 180.8,
                ),
                new Container(
                  color: Colors.black,
                  width: 180.8,
                ),
              ],
            ));
    
        var listview2 = new ListView.builder(
          //动态数据
          itemBuilder: (context, index) {
            return new ListTile(
              title: Text('${items[index]} 条目'),
            );
          },
          itemCount: items.length,
        );
    
        var grid = new GridView.count(
          padding: EdgeInsets.all(10.1),
          crossAxisSpacing: 10.2, //各个item边距的距离
          crossAxisCount: 3, //单行显示几个
          children: <Widget>[
            Text('text1'),
            Text('text2'),
            Text('text3'),
            Text('text4'),
            Text('text5'),
          ],
        );
    
        var grid2 = new GridView(
          gridDelegate: SliverGridDelegateWithFixedCrossAxisCount(
            crossAxisCount: 3,
            mainAxisSpacing: 3.0, //纵轴的间距
            crossAxisSpacing: 5.9, //横轴的间距
            childAspectRatio: 1.5, //宽高比列
          ),
          children: <Widget>[
            Image.network(
                'https://timgsa.baidu.com/timg?image&quality=80&size=b9999_10000&sec=1545816343797&di=595fadddf8be79f869d2dbaa722ebddd&imgtype=0&src=http%3A%2F%2Ffile25.mafengwo.net%2FM00%2F0A%2FAC%2FwKgB4lMC26CAWsKoAALb5778DWg60.rbook_comment.w1024.jpeg',
                fit: BoxFit.cover),
            Image.network(
                'https://timgsa.baidu.com/timg?image&quality=80&size=b9999_10000&sec=1545816343796&di=e9fc0db559b8d9aa2720fb7d757b8d7a&imgtype=0&src=http%3A%2F%2Fimgsrc.baidu.com%2Fimage%2Fc0%253Dshijue1%252C0%252C0%252C294%252C40%2Fsign%3D4af020d471cb0a46912f837a030a9c51%2Ff31fbe096b63f6242d63fb2d8d44ebf81a4ca3e6.jpg',
                fit: BoxFit.cover),
            Image.network(
                'https://timgsa.baidu.com/timg?image&quality=80&size=b9999_10000&sec=1545816343796&di=0918824b3bb836e6f157532d87fca73e&imgtype=0&src=http%3A%2F%2Fac-r.static.booking.cn%2Fimages%2Fhotel%2Fmax1024x768%2F987%2F98767654.jpg',
                fit: BoxFit.cover),
            Image.network(
                'https://timgsa.baidu.com/timg?image&quality=80&size=b9999_10000&sec=1545816343797&di=595fadddf8be79f869d2dbaa722ebddd&imgtype=0&src=http%3A%2F%2Ffile25.mafengwo.net%2FM00%2F0A%2FAC%2FwKgB4lMC26CAWsKoAALb5778DWg60.rbook_comment.w1024.jpeg',
                fit: BoxFit.cover),
            Image.network(
                'https://timgsa.baidu.com/timg?image&quality=80&size=b9999_10000&sec=1545816343796&di=e9fc0db559b8d9aa2720fb7d757b8d7a&imgtype=0&src=http%3A%2F%2Fimgsrc.baidu.com%2Fimage%2Fc0%253Dshijue1%252C0%252C0%252C294%252C40%2Fsign%3D4af020d471cb0a46912f837a030a9c51%2Ff31fbe096b63f6242d63fb2d8d44ebf81a4ca3e6.jpg',
                fit: BoxFit.cover),
            Image.network(
                'https://timgsa.baidu.com/timg?image&quality=80&size=b9999_10000&sec=1545816343796&di=0918824b3bb836e6f157532d87fca73e&imgtype=0&src=http%3A%2F%2Fac-r.static.booking.cn%2Fimages%2Fhotel%2Fmax1024x768%2F987%2F98767654.jpg',
                fit: BoxFit.cover),
          ],
        );
    
        var row = new Row(
          children: <Widget>[
            RaisedButton(
              onPressed: () {},
              color: Colors.yellow,
              textColor: Colors.blue,
              child: Text('1111111'),
            ),
            Expanded(
                //没加这个的,正常显示,加这个的会吧剩下空间的充满
                child: RaisedButton(
              onPressed: () {},
              color: Colors.red,
              textColor: Colors.blue,
              child: Text('22222'),
            )),
            RaisedButton(
              onPressed: () {}, //不加这个 下面的设置颜色都显示不出来
              color: Colors.yellow,
              textColor: Colors.blue,
              child: Text('4'),
            ),
          ],
        );
    
        var colum = new Column(
          crossAxisAlignment: CrossAxisAlignment.end,
          mainAxisAlignment: MainAxisAlignment.center,
          children: <Widget>[
            Text('11111111'),
            Expanded(
              child: Image.network(
                'https://timgsa.baidu.com/timg?image&quality=80&size=b9999_10000&sec=1545816343797&di=595fadddf8be79f869d2dbaa722ebddd&imgtype=0&src=http%3A%2F%2Ffile25.mafengwo.net%2FM00%2F0A%2FAC%2FwKgB4lMC26CAWsKoAALb5778DWg60.rbook_comment.w1024.jpeg',
                fit: BoxFit.fill,
                color: Colors.yellow,
              ),
            ),
            Text(
              '3333333333',
              style: TextStyle(color: Colors.red),
            )
          ],
        );
    
        var stack = new Stack(
          alignment: FractionalOffset(0.5, 0.8), //相对于下面的图片的宽高的比列,只能用于两个控件进行重叠
          children: <Widget>[
            CircleAvatar(
              backgroundImage: NetworkImage(
                  'https://timgsa.baidu.com/timg?image&quality=80&size=b9999_10000&sec=1545816343797&di=595fadddf8be79f869d2dbaa722ebddd&imgtype=0&src=http%3A%2F%2Ffile25.mafengwo.net%2FM00%2F0A%2FAC%2FwKgB4lMC26CAWsKoAALb5778DWg60.rbook_comment.w1024.jpeg'),
              radius: 120, //圆的半径
            ),
            Container(
              color: Colors.red,
              child: Text('111111111111'),
              padding: EdgeInsets.all(3.3),
            ),
            /* RaisedButton(
              child: Text('button'),
              color: Colors.yellow,
              onPressed: () {},
            ),*/
          ],
        );
    
        var stack2 = new Stack(
          children: <Widget>[
            CircleAvatar(
              backgroundImage: NetworkImage(
                  'https://timgsa.baidu.com/timg?image&quality=80&size=b9999_10000&sec=1545816343797&di=595fadddf8be79f869d2dbaa722ebddd&imgtype=0&src=http%3A%2F%2Ffile25.mafengwo.net%2FM00%2F0A%2FAC%2FwKgB4lMC26CAWsKoAALb5778DWg60.rbook_comment.w1024.jpeg'),
              radius: 100.2,
            ),
            Positioned(
              child: Text('aaaaaaaaaaaa'),
              top: 100.8,
              left: 100.9,
            ),
            Positioned(
              child: Image.network(
                  'https://timgsa.baidu.com/timg?image&quality=80&size=b9999_10000&sec=1545816343797&di=595fadddf8be79f869d2dbaa722ebddd&imgtype=0&src=http%3A%2F%2Ffile25.mafengwo.net%2FM00%2F0A%2FAC%2FwKgB4lMC26CAWsKoAALb5778DWg60.rbook_comment.w1024.jpeg'),
              right: 10.8,
              bottom: 100.9,
            ),
          ],
        );
    
        return MaterialApp(
          title: '1111',
          home: Scaffold(
            appBar: AppBar(title: Text('ydd  demo')),
            body: Center(
              child: FirstPage(),
            ),
          ),
        );
      }
    }
    
    class FirstPage extends StatelessWidget {
      @override
      Widget build(BuildContext context) {
        // TODO: implement build
        return Scaffold(
          body: RaisedButton(
            onPressed: () {
              _navigateToRoutePage(context);
            },
            child: Text('第一个界面'),
          ),
        );
      }
    }
    
    _navigateToRoutePage(BuildContext context) async {
      final result = await Navigator.push(
          context, MaterialPageRoute(builder: (context) => new RoutePage()));
      Scaffold.of(context).showSnackBar(SnackBar(content: Text('$result')));
    }
    
    class RoutePage extends StatelessWidget {
      @override
      Widget build(BuildContext context) {
        // TODO: implement build
        return Scaffold(
          appBar: AppBar(
            title: Text('返回'),
          ),
          body: RaisedButton(
            onPressed: () {
              Navigator.pop(context, '收拾收拾多发所过付多所过所的');
            },
            child: Text('返回上个界面'),
          ),
        );
      }
    }
    

    github地址 https://github.com/yzxzm/flutter_ydd

    相关文章

      网友评论

          本文标题:Flutter学习笔记

          本文链接:https://www.haomeiwen.com/subject/pfkklqtx.html