Flutter学习之重叠布局

Stella981
• 阅读 711
  1. 两个元素的重叠布局
    可以使用stack组件

    import 'package:flutter/material.dart';

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

    class MyApp extends StatelessWidget{ @override var stack = new Stack( alignment: const FractionalOffset(0.5, 0.7), children: [ new CircleAvatar( backgroundImage: new NetworkImage("https://avatars2.githubusercontent.com/u/41252899?s=460&v=4"), radius: 100.0, ), new Container( decoration: new BoxDecoration( color: Colors.pinkAccent, ), padding: EdgeInsets.all(5.0), child: new Text("ayang"), ) ], ); //使用变量创建重叠的组件,起到减轻代码量的效果 Widget build(BuildContext context){ return MaterialApp( title: "stack层叠布局", home: Scaffold( appBar: new AppBar( title: new Text("stack 层叠布局"), backgroundColor: Colors.pink, ), body: Center( child: stack ), ), ); } }

之前的两个博客分别写了水平布局和纵向布局,这两种布局可以满足很多布局需求了,但是遇到一些组件的堆叠时,还是不能很好的完成任务。这个时候就需要重叠布局(stack),

在上述代码中我们学到了一个新的方法,就是var 一个变量,为这个变量创建一个组件(我估摸着这个组件可能只有在自己的类里才能被直接使用),在这个变量中我们使用了Stack这个重叠布局组件,在其children这个属性里
创建了一个CircleAvatar组件,对其中设置了backgroundImage属性NetworkImage(""),以及大小属性radius。
创建了一个Container组件,内设文字组件。

  1. 两个元素以上的布局
    在stack中使用Positioned多重重叠布局
    (个人感觉和在row中使用expanded进行布局有相同之处)

    import 'package:flutter/material.dart';

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

    class MyApp extends StatelessWidget{ @override var stack = new Stack( alignment: const FractionalOffset(0.5, 0.7), children: [ new CircleAvatar( backgroundImage: new NetworkImage("https://avatars2.githubusercontent.com/u/41252899?s=460&v=4"), radius: 100.0, ), new Positioned( top: 10.0, left: 10.0, child: new Text("YFC"), ), new Positioned( bottom: 10.0, right: 10.0, child: new Text("https://ayang818.github.io/"), ) ], ); //使用变量创建重叠的组件,起到减轻代码量的效果 Widget build(BuildContext context){ return MaterialApp( title: "stack层叠布局", home: Scaffold( appBar: new AppBar( title: new Text("stack 层叠布局"), backgroundColor: Colors.pink, ), body: Center( child: stack ), ), ); } }

点赞
收藏
评论区
推荐文章
浩浩 浩浩
3年前
【Flutter实战】层叠布局(Stack、Positioned)
4.5层叠布局Stack、Positioned层叠布局和Web中的绝对定位、Android中的Frame布局是相似的,子组件可以根据距父容器四个角的位置来确定自身的位置。绝对定位允许子组件堆叠起来(按照代码中声明的顺序)。Flutter中使用Stack和Positioned这两个组件来配合实现绝对定位。Stack允许子组件堆叠,而Pos
浩浩 浩浩
3年前
【Flutter实战】对齐与相对定位(Align)
4.6对齐与相对定位(Align)在上一节中我们讲过通过Stack和Positioned,我们可以指定一个或多个子元素相对于父元素各个边的精确偏移,并且可以重叠。但如果我们只想简单的调整一个子元素在父元素中的位置的话,使用Align组件会更简单一些。4.6.1AlignAlign组件可以调整子组件的位置,并且可以根据子
Stella981 Stella981
2年前
Flutter学习之动态ListView
import'package:flutter/material.dart';voidmain(){runApp(listname(item:newList<String.generate(1000,(i)"genarate$i")));}
Stella981 Stella981
2年前
Flutter
在Flutter加载网页?也是有WebView的哦,和Android一样1.添加依赖dependencies:flutter\_webview\_plugin:^0.2.122.导入库import'import'package:flutter\_webview\_plugin/flutter\_webview\_plug
Stella981 Stella981
2年前
Flutter中日期组件DatePicker及组件汉化
Flutter提供了DatePicker组件进行时间选择。日期组件及时间组件代码示例:import'package:flutter/material.dart';//第三方插件,需要提前配置import'package:date_format/date_format.dart';classDat
Stella981 Stella981
2年前
Flutter Widget不刷新问题
import'package:flutter/material.dart';///温度显示okclassTemperatureIndicationextendsStatefulWidget{finalValueChanged<intvalueChanged;final
Stella981 Stella981
2年前
Flutter入门(四)
\TabBar(顶部导航)import'package:flutter/material.dart';classCategoryPageextendsStatefulWidget{CategoryPage({Keykey}):super(key:key);@o
Stella981 Stella981
2年前
Flutter BottomSheet底部弹窗效果
BottomSheet是一个从屏幕底部滑起的列表(以显示更多的内容)。你可以调用showBottomSheet()或showModalBottomSheet弹出import'package:flutter/material.dart';import'dart:async';classBottomSheetDem
Stella981 Stella981
2年前
Flutter 基础组件:文本、字体样式
//文本、字体样式import'package:flutter/material.dart';classTextFontStyleextendsStatelessWidget{//声明文本样式TextStyletextStyleconstT
Stella981 Stella981
2年前
34 Flutter仿京东商城项目 用户注册 注册流程 POST发送验证码 倒计时功能 验证验证码
加群_452892873_下载对应34课文件,运行方法,建好项目,直接替换lib目录以下列出的是本课涉及的文件。RegisterFirst.dartimport'package:flutter/material.dart';import'package:flutter_jdshop/services/ScreenA