Flutter 将子容器放置在分数位置

Flutter 将子容器放置在分数位置,flutter,Flutter,如何在堆栈中的特定(分数)位置放置具有设置大小的正方形 我可以求助于画家,但我想看看是否可以使用小部件来实现这一点。您可以使用设置大小的容器中的装饰框,绘制一个正方形,并将其放置在堆栈中的任何位置,方法是将其包装成对齐或定位小部件: import 'package:flutter/material.dart'; void main() { runApp(new MyApp()); } class MyApp extends StatelessWidget { @override

如何在堆栈中的特定(分数)位置放置具有设置大小的正方形


我可以求助于画家,但我想看看是否可以使用小部件来实现这一点。

您可以使用设置大小的
容器中的
装饰框
,绘制一个正方形,并将其放置在
堆栈
中的任何位置,方法是将其包装成
对齐
定位
小部件:

import 'package:flutter/material.dart';

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

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return new MaterialApp(
      title: 'Flutter Demo',
      theme: new ThemeData(
        primarySwatch: Colors.blue,
      ),
      home: new StackExamplePage(),
    );
  }
}

class StackExamplePage extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return new Scaffold(
        backgroundColor: Colors.grey,
        appBar: new AppBar(
            title: new Text('Stack Example')
        ),
        body: _createStack()
    );
  }

  _createStack() {
    return new Stack(
        children: <Widget>[
          new Image.network(
            'https://i.imgur.com/FsXL8vI.jpg',
          ),
          // Black square centered in stack
          new Align(
            alignment: new Alignment(0.0, 0.0),
            child: new Container(
              height: 50.0,
              width: 50.0,
              child: new DecoratedBox(
                decoration: new BoxDecoration(
                    color: Colors.black
                ),
              ),
            ),
          ),
          new Align(
            // alignment: Alignment.topLeft,
            alignment: const Alignment(-1.0, -1.0),
            child: new Text('Top Left',
                style: new TextStyle(color: Colors.yellow)),
          ),
          new Align(
            // alignment: Alignment.bottomRight,
            alignment: const Alignment(1.0, 1.0),
            child: new Text('Bottom Right',
                style: new TextStyle(color: Colors.yellow)),
          ),
          new Align(
            alignment: new Alignment(-0.8, -0.8),
            child: new Text(
                '10% in', style: new TextStyle(color: Colors.yellow)),
          ),
          new Align(
            alignment: new Alignment(0.8, 0.8),
            child: new Text(
                '90% in', style: new TextStyle(color: Colors.yellow)),
          ),
        ]
    );
  }
}
导入“包装:颤振/材料.省道”;
void main(){
runApp(新的MyApp());
}
类MyApp扩展了无状态小部件{
@凌驾
小部件构建(构建上下文){
返回新材料PP(
标题:“颤振演示”,
主题:新主题数据(
主样本:颜色。蓝色,
),
主页:新建StackExamplePage(),
);
}
}
类StackExamplePage扩展了无状态小部件{
@凌驾
小部件构建(构建上下文){
归还新脚手架(
背景颜色:颜色。灰色,
appBar:新的appBar(
标题:新文本(“堆栈示例”)
),
正文:_createStack()
);
}
_createStack(){
返回新堆栈(
儿童:[
新图像网络(
'https://i.imgur.com/FsXL8vI.jpg',
),
//在堆栈中居中的黑色正方形
新对齐(
对齐:新对齐(0.0,0.0),
子容器:新容器(
身高:50.0,
宽度:50.0,
孩子:新装饰的盒子(
装饰:新盒子装饰(
颜色:颜色。黑色
),
),
),
),
新对齐(
//对齐:alignment.topLeft,
对齐:常量对齐(-1.0,-1.0),
子项:新文本('左上方',
样式:新文本样式(颜色:Colors.yellow)),
),
新对齐(
//对齐:对齐。右下角,
对齐:常量对齐(1.0,1.0),
子项:新文本('右下',
样式:新文本样式(颜色:Colors.yellow)),
),
新对齐(
对齐:新对齐(-0.8,-0.8),
儿童:新文本(
“10%英寸”,样式:新文本样式(颜色:Colors.yellow)),
),
新对齐(
对齐:新对齐(0.8,0.8),
儿童:新文本(
“90%英寸”,样式:新文本样式(颜色:Colors.yellow)),
),
]
);
}
}