美文网首页Flutter圈子Flutter中文社区
Flutter widgets——Container/Row/C

Flutter widgets——Container/Row/C

作者: 法的空间 | 来源:发表于2018-12-03 17:29 被阅读32次

    俗话说知己知彼百战百胜,Flutter里面一切都是Widget来组装而成的。
    如果对Flutter 里面的各种Widgets不了解,那你就别想将它们组合成你想要的效果。从今天开始。会把一个一个的widget 撸一遍。。知道它大概的用法/效果。当你想做某个效果的时候。脑袋里面才能第一时间想到它。

    Sample Code

    Container

    作为最常用的内容widget,margin,padding, color(background),width,height,children 这些属性很好理解。

            new Container(
              margin: const EdgeInsets.all(10.0),
              color: const Color(0xFF00FF00),
              width: 48.0,
              height: 48.0,
              child: new Text("Hello Flutter"),
              padding:  const EdgeInsets.only(left: 6.0),
            );
    

    constraints 对Container大小的约束。他会结合width,height进行处理
    foregroundDecoration 一个前置的装饰器。哈哈把我的Text 挡住了。
    transform 变形

              new Container(
              constraints: new BoxConstraints.expand(
                height: Theme.of(context).textTheme.display1.fontSize * 1.1 + 200.0,
              ),
              padding: const EdgeInsets.all(8.0),
              color: Colors.teal.shade700,
              alignment: Alignment.center,
              child: new Text('Hello World', style: Theme.of(context).textTheme.display1.copyWith(color: Colors.white)),
              foregroundDecoration: new BoxDecoration(
                image: new DecorationImage(
                  image: new NetworkImage('http://p0.so.qhimgs1.com/bdr/200_200_/t011fa0ccaa6d22240c.jpg'),
                  centerSlice: new Rect.fromLTRB(270.0, 180.0, 1360.0, 730.0),
                ),
              ),
              transform: new Matrix4.rotationZ(0.1),
            );
    

    RowColumn

    常用的多内容Widget,可以将Child 按照水平/垂直的方式(跟UWP里面设计思维的完全相反。。哈哈哈好尴尬)布局,它们都继承于Flex.

    Row和Column差别是设置了不同的flex-direction.

    Flex通过direction设置了flex的主轴方向即main axis。和主轴垂直的方向叫做cross axis。flex布局中对子布局的控制是从main axis 和cross axis两个方向上进行的.
    下面是一图流解释

    image image

    Image

    FadeInImage

    image

    默认是这几种方式。支持GIF格式,如果你想写一个缓存本地硬盘的Image。你可以重写ImageProvider.这里推荐一下插件flutter_advanced_networkimage

    对于默认的Image是有做内存缓存,默认是1000.

    const int _kDefaultSize = 1000;
    const int _kDefaultSizeBytes = 100 << 20; // 100 MiB//清除
    PaintingBinding.instance.imageCache.clear();
    //缓存张数
    PaintingBinding.instance.imageCache.maximumSize=500;
    //缓存大小
    PaintingBinding.instance.imageCache.maximumSizeBytes=1000;
    

    另外Image有个重要的属性就是Fit,相当于UWP里面的Stretch

    image

    在实际应用中,这4个widget使用的频率是相当高的,知道它的每种用法是非常有必要的,感兴趣的童鞋快去试试吧

    Sample Code

    相关文章

      网友评论

        本文标题:Flutter widgets——Container/Row/C

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