美文网首页
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 布局

    Flutter 布局详解 Flutter 布局(一)- Container详解 Flutter 布局(二)- Pa...

  • Flutter-布局

    一、介绍 flutter布局需要先了解flutter所有布局的widget,首先flutter布局分为Contai...

  • Flutter-汇总

    Flutter(一)--Flutter安装遇到的问题汇总 Flutter(二)--布局机制、布局步骤、水平和垂直布...

  • Flutter旋转位移等操作

    flutter布局-5-Matrix4矩阵变换Flutter 布局(六)- SizedOverflowBox、Tr...

  • flutter布局-3-center

    Center 居中的布局 连载:flutter布局-1-column连载:flutter布局-2-row 只能有一...

  • Flutter及Dart入门

    目录 Dart语言下的Flutter Flutter Widget Flutter 布局 Flutter 页面 路...

  • flutter(六,页面布局篇)

    Tags: flutter Flutter页面布局篇 [TOC] 1. 布局及装饰组件说明 2. 基础布局处理 2...

  • 2019-04-15 Flutter 布局方式

    1:Flutter 的 布局 1.1概述: 1.2总体 flutter 中的布局 是以原子布局实体为填充物,根据行...

  • flutter布局-4-container

    Container 容器 连载:flutter布局-1-column连载:flutter布局-2-row连载:fl...

  • flutter Cannot provide both a co

    flutter布局错误'package:flutter/src/widgets/container .dart' ...

网友评论

      本文标题:Flutter:布局

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