Stack 表示堆的意思,我們可以用 Stack 或者 Stack 結合 Align 或者 Stack 結合 Positiond 來實現頁面的定位布局
屬性 |
說明 |
alignment |
配置所有子元素的顯示位置
|
children |
子組件 |
Stack 組件中結合 Positioned 組件可以控制每個子元素的顯示位置
屬性 |
說明 |
top |
子元素距離頂部的距離 |
bottom |
子元素距離底部的距離 |
left |
子元素距離左側距離 |
right |
子元素距離右側距離 |
child |
子組件 |
import 'package:flutter/material.dart'; void main() => runApp(MyApp()); class MyApp extends StatelessWidget { @override Widget build(BuildContext context) { // TODO: implement build return MaterialApp( home: Scaffold( appBar: AppBar(title: Text('FlutterDemo')), body: LayoutDemo(), )); } } class LayoutDemo extends StatelessWidget { @override Widget build(BuildContext context) { // TODO: implement build return Center( child: Container( height: 400, width: 300, color: Colors.red, child: Stack( // alignment: Alignment.center, children: <Widget>[ Positioned( // left: 10, child: Icon(Icons.home,size: 40,color: Colors.white), ), Positioned( bottom: 0, left: 100, child: Icon(Icons.search,size: 30,color: Colors.white), ), Positioned( right: 0, child: Icon(Icons.settings_applications,size: 30,color: Colors.white), ) ], ), ), ); } }
Stack 組件中結合 Align 組件可以控制每個子元素的顯示位置
import 'package:flutter/material.dart'; void main() => runApp(MyApp()); class MyApp extends StatelessWidget { @override Widget build(BuildContext context) { // TODO: implement build return MaterialApp( home: Scaffold( appBar: AppBar(title: Text('FlutterDemo')), body: LayoutDemo(), )); } } class LayoutDemo extends StatelessWidget { @override Widget build(BuildContext context) { // TODO: implement build return Center( child: Container( height: 400, width: 300, color: Colors.red, child: Stack( // alignment: Alignment.center, children: <Widget>[ Align( alignment: Alignment(1,-0.2), child: Icon(Icons.home,size: 40,color: Colors.white), ), Align( alignment: Alignment.center, child: Icon(Icons.search,size: 30,color: Colors.white), ), Align( alignment: Alignment.bottomRight, child: Icon(Icons.settings_applications,size: 30,color: Colors.white), ) ], ), ), ); } }
import 'package:flutter/material.dart'; void main() => runApp(MyApp()); class MyApp extends StatelessWidget { @override Widget build(BuildContext context) { // TODO: implement build return MaterialApp( home: Scaffold( appBar: AppBar(title: Text('FlutterDemo')), body: LayoutDemo(), )); } } class LayoutDemo extends StatelessWidget { @override Widget build(BuildContext context) { // TODO: implement build return Center( child: Stack( alignment: Alignment.topLeft, children: <Widget>[ Container( height: 400, width: 300, color: Colors.red, ), Text('我是一個文本',style: TextStyle( fontSize: 40, color: Colors.white )) ], ), ); } }