美文网首页
Flutter:布局

Flutter:布局

作者: 康小曹 | 来源:发表于2019-06-07 23:03 被阅读0次

    布局

    注意点
    1. column所占空间的决定因素:元素长度?alignment??
      例如:
      如果使用Column来做整体布局,设置图片时需要注意Column所占的空间。比如:
    class layout extends StatelessWidget {
      @override
      Widget build(BuildContext context) {
        return new Column(
          crossAxisAlignment: CrossAxisAlignment.stretch,
          children: <Widget>[
            new Image.asset(
              'images/image1.png',
              height: 250.0,
              fit: BoxFit.fill,
            ),
            new layoutTitle(),
          ],
        );
      }
    }
    

    如果不设置下面这句

    crossAxisAlignment: CrossAxisAlignment.stretch,
    

    则页面是这样的:


    Column

    2.Expanded()的作用??自适应的具体规则是?
    使Expanded中的child保持可扩展性,而不是sizeToFit(自适应大小)
    例如:

    class layoutTitle extends StatelessWidget {
      @override
      Widget build(BuildContext context) {
        return new Container(
          padding: const EdgeInsets.all(32),
          child: new Row(
            children: <Widget>[
              new Expanded(
                child:
                new twoLinesTextView(),
              ),
    //          new Expanded(
    //          child:
              new startView(),
    //          )
            ],
          ),
        );
      }
    }
    

    结果:


    Expanded

    如果不使用Expande包裹住twoLinesTextView,结果:


    Expanded
    如果startView和twoLinesTextView两个都使用Expanded包裹:
    Expanded

    备注:文字展现不全的问题还与Text空间的softWrap属性有关

    几个步骤
    只需几个步骤即可在屏幕上放置文本,图标或图像。
    可见widget添加到布局widget.
    所有布局widget都有一个child属性(例如Center或Container),或者一个 children属性,如果他们需要一个widget列表(例如Row,Column,ListView或Stack)。

    1. 选择一个widget来保存该对象(布局widget)

    2. 创建一个widget来容纳可见对象(可见widget)

    3. 将可见widget添加到布局widget.
      所有布局widget都有一个child属性(例如Center或Container),或者一个 children属性,如果他们需要一个widget列表(例如Row,Column,ListView或Stack)。

    4. 将布局widget添加到页面.
      Flutter应用本身就是一个widget,大部分widget都有一个build()方法。在应用程序的build方法中创建会在设备上显示的widget。 对于Material应用程序,您可以将Center widget直接添加到body属性中

    混合使用widget???

    在设计用户界面时,您可以使用标准widget库中的widget,也可以使用Material Components中的widget。 您可以混合使用两个库中的widget,可以自定义现有的widget,也可以构建一组自定义的widget。

    // 这个App没有使用Material组件,  如Scaffold.
    // 一般来说, app没有使用Scaffold的话,会有一个黑色的背景和一个默认为黑色的文本颜色。
    // 这个app,将背景色改为了白色,并且将文本颜色改为了黑色以模仿Material app
    import 'package:flutter/material.dart';
    
    void main() {
      runApp(new MyApp());
    }
    
    class MyApp extends StatelessWidget {
      @override
      Widget build(BuildContext context) {
        return new Container(
          decoration: new BoxDecoration(color: Colors.white),
          child: new Center(
            child: new Text('Hello World',
                textDirection: TextDirection.ltr,
                style: new TextStyle(fontSize: 40.0, color: Colors.black87)),
          ),
        );
      }
    }
    

    MaterialApp默认的文字方向

    默认文字方向


    文字方向

    相关文章

      网友评论

          本文标题:Flutter:布局

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