美文网首页
Flutter-线性布局

Flutter-线性布局

作者: 阿博聊编程 | 来源:发表于2022-05-23 10:28 被阅读0次
配图来自网络,如侵必删

在日常的开发中,线性布局是最常的布局方式。Flutter当中线性布局主要有RowColumn两种。这篇博客来分享RowColumn相关的知识,希望对文章的小伙伴有所帮助。

示例代码

分享一下,我同时使用RowColumn的代码:

 Column(
        children: <Widget>[
          Row(
            children: <Widget>[
              buildItem('横一', Colors.redAccent),
              buildItem('横二', Colors.orangeAccent),
              buildItem('横三', Colors.yellowAccent)
            ],
          ),
          const Padding(padding: EdgeInsets.all(8)),
          Column(
            children: <Widget>[
              buildItem('纵一', Colors.redAccent),
              buildItem('纵二', Colors.orangeAccent),
              buildItem('纵三', Colors.yellowAccent)
            ],
          )
        ],
      ),

实现思路是:用一个Column包裹使用RowColumnItem的代码:

buildItem(String content, Color backgroundColor) {
    return Container(
      width: 100,
      height: 100,
      alignment: Alignment.center,
      color: backgroundColor,
      child: Text(content),
    );
  }

代码运行效果:


image.png

完整代码

完整的示例代码,感兴趣的小伙伴可以复制到自己的编译器当中修改。

import 'package:flutter/material.dart';

void main() {
  runApp(const MyApp());
}

class MyApp extends StatelessWidget {
  const MyApp({Key? key}) : super(key: key);

  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'Flutter Demo',
      theme: ThemeData(
        primarySwatch: Colors.blue,
      ),
      home: const MyHomePage(title: '线性布局Demo'),
    );
  }
}

class MyHomePage extends StatefulWidget {
  const MyHomePage({Key? key, required this.title}) : super(key: key);

  final String title;

  @override
  State<MyHomePage> createState() => _MyHomePageState();
}

class _MyHomePageState extends State<MyHomePage> {
  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text(widget.title),
      ),
      body: Column(
        children: <Widget>[
          Row(
            children: <Widget>[
              buildItem('横一', Colors.redAccent),
              buildItem('横二', Colors.orangeAccent),
              buildItem('横三', Colors.yellowAccent)
            ],
          ),
          const Padding(padding: EdgeInsets.all(8)),
          Column(
            children: <Widget>[
              buildItem('纵一', Colors.redAccent),
              buildItem('纵二', Colors.orangeAccent),
              buildItem('纵三', Colors.yellowAccent)
            ],
          )
        ],
      ),
    );
  }

  buildItem(String content, Color backgroundColor) {
    return Container(
      width: 100,
      height: 100,
      alignment: Alignment.center,
      color: backgroundColor,
      child: Text(content),
    );
  }
}

Column

Column是垂直布局,可以实现的布局的从上往下。源码:

Column({
    Key? key,
    MainAxisAlignment mainAxisAlignment = MainAxisAlignment.start,
    MainAxisSize mainAxisSize = MainAxisSize.max,
    CrossAxisAlignment crossAxisAlignment = CrossAxisAlignment.center,
    TextDirection? textDirection,
    VerticalDirection verticalDirection = VerticalDirection.down,
    TextBaseline? textBaseline,
    List<Widget> children = const <Widget>[],
  }) : super(
    children: children,
    key: key,
    direction: Axis.vertical,
    mainAxisAlignment: mainAxisAlignment,
    mainAxisSize: mainAxisSize,
    crossAxisAlignment: crossAxisAlignment,
    textDirection: textDirection,
    verticalDirection: verticalDirection,
    textBaseline: textBaseline,
  );

Row

Row是水平布局,可以实现的布局的从左往右。源码:

Row({
    Key? key,
    MainAxisAlignment mainAxisAlignment = MainAxisAlignment.start,
    MainAxisSize mainAxisSize = MainAxisSize.max,
    CrossAxisAlignment crossAxisAlignment = CrossAxisAlignment.center,
    TextDirection? textDirection,
    VerticalDirection verticalDirection = VerticalDirection.down,
    TextBaseline? textBaseline, // NO DEFAULT: we don't know what the text's baseline should be
    List<Widget> children = const <Widget>[],
  }) : super(
    children: children,
    key: key,
    direction: Axis.horizontal,
    mainAxisAlignment: mainAxisAlignment,
    mainAxisSize: mainAxisSize,
    crossAxisAlignment: crossAxisAlignment,
    textDirection: textDirection,
    verticalDirection: verticalDirection,
    textBaseline: textBaseline,
  );

相关文章

  • Flutter-线性布局

    在日常的开发中,线性布局是最常的布局方式。Flutter当中线性布局主要有Row和Column两种。这篇博客来分享...

  • Flutter 开发问题汇集

    问题1:Flutter-解决键盘弹起导致页面布局异常,报错:RangeError (index): Invalid...

  • 安卓原生页面布局总结

    布局分为线性布局:LinearLayout和相对布局:RelativeLayout 线性布局:LinearLayo...

  • Android之布局

    LinearLayout - 线性布局 线性布局,最常用的布局之一,所有包含在线性布局里的控件在线性方向上依次排列...

  • Android应用界面开发——第二周笔记

    线性布局 线性布局是程序中常见的布局方式之一,包括水平线性布局和垂直线性布局两种, 通过Android:orien...

  • 常用的五大布局

    常用的五大布局(线性布局,相对布局,帧布局,表格布局,绝对布局) 1,线性布局 LinearLayout ...

  • 3.1 布局类Widget-线性布局Row和Column

    线性布局Row和Column弹性布局Felx 线性布局Row和Column 所谓线性布局,即指沿水平或垂直方向排布...

  • 四大layout

    LinerLayout 线性布局 LinerLayout, 中文名为线性布局。这个布局会将它所包含的控件在线性方向...

  • 布局 - 线性布局

    LinearLayout 线性布局 线性布局是一种非常常用的布局,控件在该布局中按线性方向依次排列。 属性 and...

  • 2019-03-15

    实验内容:关于线性布局、约束布局及表格布局的使用 主要代码: 主界面: 线性布局: 约束布局: 表格布局: 截图:...

网友评论

      本文标题:Flutter-线性布局

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