【发布时间】:2020-04-02 03:56:26
【问题描述】:
我发现很难以一种视觉表现与其他小部件协调的方式来布局按钮,但它们的可触摸区域为用户的手指提供了额外的额外空间。
请看附图。
代码:
import 'package:flutter/material.dart';
void main() => runApp(MyApp());
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return MaterialApp(
home: Material(child: HomePage()),
);
}
}
class HomePage extends StatelessWidget {
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(),
body: Column(
children: <Widget>[
Container(
color: Colors.yellow,
padding: EdgeInsets.all(16),
child: Column(
children: <Widget>[
Row(
children: <Widget>[
Text('Top Left'),
Spacer(),
Text('Top right')
],
),
Row(
children: <Widget>[
Text('Middle Left'),
Spacer(),
Text('Middle right')
],
),
Row(
children: <Widget>[
Text('Bottom Left'),
Spacer(),
Text('Bottom right')
],
),
],
),
),
Container(
color: Colors.orange,
padding: EdgeInsets.all(16),
child: Column(
children: <Widget>[
Row(
children: <Widget>[
Text('Top Left'),
Spacer(),
FlatButton(
child: Text('Top right'),
onPressed: () {},
)
],
),
Row(
children: <Widget>[
Text('Middle Left'),
Spacer(),
Text('Middle right')
],
),
Row(
children: <Widget>[
IconButton(
icon: Icon(Icons.print),
onPressed: () {},
alignment: Alignment.bottomLeft,
),
Spacer(),
Text('Bottom right')
],
),
],
),
),
],
),
);
}
}
“所有文本”小部件排列精美。但是当我添加交互式小部件时,它开始变得丑陋。
平面按钮的字体与文本相同。但它的可触摸区域正在扩大它。我知道materialTapTargetSize,但它缩小了可点击区域,该区域具有膨胀的尺寸,以便于点击它。有没有一种简单的方法可以将它完全呈现为“右上角”文本小部件并且仍然具有相同的可触摸区域?在这种情况下,可触摸区域应该进一步扩大到 16 像素的填充,因为我会将 Ink 链接到按钮周围。
IconButton 高于文本,但问题是它没有从文本开始的地方开始(左边缘)。即使我添加了alignment: Alignment.centerLeft,它也会稍微向左移动,但仍然不会与其他文本并排。最重要的是,在更改此对齐方式后,它不再位于 InkWell 的中心。
目前,我使用 Stack 和 Positioned 小部件解决了所有这些问题。通过这种方法,我可以准确控制项目的位置,并且 InkWell 将内容准确地保持在中心。但我认为这不是一个正确的解决方案。
感谢您的反馈。
【问题讨论】:
标签: button flutter layout alignment