flutter - 对齐小部件的中心
问题描述
我希望灰色框的中心使用对齐小部件位于黑色像素处。(两者都具有相同的 Alignment(-0.6, -0.6))
Positioned.fill 在我的情况下是需要的。
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return MaterialApp(
home: Scaffold(
body: Stack(children: <Widget>[
Positioned.fill(
child: Align(
alignment: Alignment(-0.6, -0.6),
child: Container(
height: 48,
width: 48,
color: Colors.grey[300],
)),
),
Positioned.fill(
child: Align(
alignment: Alignment(-0.6, -0.6),
child: Container(
height: 1,
width: 1,
color: Colors.black,
)),
)
])));
}
}
解决方案
Flutter Align 的工作原理
对齐小部件,Alain 对象在他的父级上......当您Alignment(0,0)
将此对象的中心位置设置在他的父级的中心时。(下图)
当你设置Alignment(1,0)
你设置x = 1
这意味着这个对象的正确位置在他的父母的右边。(下图)
所以大物体的移动速度比小物体慢,因为它们的方式更短。
例如,如果我们的屏幕是 100px in 100px 并且我们有一个 90px in 90px 的对象。如果我们将对齐从这个对象Alignment(0,0)
移动Alignment(1,0)
多少像素?只有 5 个像素。 ((100 - 90)/2 = 5)
在这个例子中,如果我们的对象大小是 1px in 1px,答案是什么?~= 50 像素 ((100 - 1)/2 = 49.5)
现在你能做什么?
计算设备的像素和....(我不喜欢这种方式)
使用
Composite Transform Follower
和Composite Transform Target
Composite Transform Follower
我为和写了一个例子Composite Transform Target
import 'package:flutter/material.dart';
void main() {
runApp(MyApp());
}
class MyApp extends StatefulWidget {
@override
State<StatefulWidget> createState() {
// TODO: implement createState
return ssMyApp();
}
}
class ssMyApp extends State<MyApp> {
LayerLink mylink = new LayerLink();
@override
Widget build(BuildContext context) {
return MaterialApp(
home: Scaffold(
body: Stack(children: <Widget>[
Positioned.fill(
child: Align(
alignment: Alignment(-0.6, -0.6),
child: CompositedTransformTarget(
link: mylink,
child: Container(
height: 48,
width: 48,
color: Colors.grey[300],
),
),
),
),
Positioned.fill(
child: Center(
child: CompositedTransformFollower(
link: mylink,
offset: Offset(0.5, 0.5),
child: Padding(
padding: const EdgeInsets.only(top: 24, left: 24),
child: Container(
height: 1,
width: 1,
color: Colors.black,
),
),
),
),
)
])));
}
}
推荐阅读
- sql - 在“空白”表上加入查询 - 更新时需要添加
- python-3.x - ValueError:先验数必须与类数匹配
- python - 如何选择多个多边形矢量图层区域内的点?
- javascript - 如何在与从 Google Charts 获取图表相关的服务器上的脚本中提取附加到 URL 的参数?
- keras - 连接具有不同激活的密集层
- angularjs - Angular JS:未知提供者:$mdThemingProviderProvider <- $mdThemingProvider
- amazon-web-services - 调用 CreateTable 操作时发生错误(ResourceInUseException):表已存在:
- strapi - 连接到mysql数据库时管理页面未加载
- sql - Oracle Forms - 如何加快 POST_QUERY 触发器?
- python - 如果 pandas.DatetimeIndex 中存在特定日期的特定数量的数据,则选择数据