Flutter 颤振:RaisedButton展开和收缩,但也包括收缩和展开的文本
亲爱的弗利特社区 我有一行,右边有一个升起的按钮,左边有一个升起的按钮。两个升起的按钮内部都有文本,文本的长度可以不同(只有一个单词,没有句子)。我总是希望RaisedButton尽可能小,以便文本正好适合RaisedButton。因此,RaisedButton的大小是灵活的。其次,我也不希望RaisedButton太宽(高度也是固定的),因为这很难看,可能会导致像素溢出。因此,这意味着一旦达到RaisedButton的大小限制,文本的fontSize就会缩小。(注意,我首先希望按钮展开,如果这还不够,我希望文本缩小,而不是相反)。 您可以在下面找到一些代码:Flutter 颤振:RaisedButton展开和收缩,但也包括收缩和展开的文本,flutter,flutter-layout,Flutter,Flutter Layout,亲爱的弗利特社区 我有一行,右边有一个升起的按钮,左边有一个升起的按钮。两个升起的按钮内部都有文本,文本的长度可以不同(只有一个单词,没有句子)。我总是希望RaisedButton尽可能小,以便文本正好适合RaisedButton。因此,RaisedButton的大小是灵活的。其次,我也不希望RaisedButton太宽(高度也是固定的),因为这很难看,可能会导致像素溢出。因此,这意味着一旦达到RaisedButton的大小限制,文本的fontSize就会缩小。(注意,我首先希望按钮展开,如果这
Row(
mainAxisAlignment: MainAxisAlignment.spaceBetween,
children: <Widget>[
RaisedButton(
onPressed: () …
color: App.focusColor,
shape: RoundedRectangleBorder(
borderRadius: new BorderRadius.circular(50.0),
side: BorderSide(color: App.primaryColor),
),
child: ConstrainedBox(
constraints: BoxConstraints(
minWidth: MediaQuery.of(context).size.width * 0.1,
maxWidth: MediaQuery.of(context).size.width * 0.35,
maxHeight: 20,
minHeight: 20,
),
child: FittedBox(
fit: BoxFit.fitWidth,
child: Text(
…),
),
),
),
RaisedButton(
onPressed: () …
color: App.focusColor,
shape: RoundedRectangleBorder(
borderRadius: new BorderRadius.circular(50.0),
side: BorderSide(color: App.primaryColor),
),
child: ConstrainedBox(
constraints: BoxConstraints(
minWidth:
MediaQuery.of(context).size.width * 0.1,
maxWidth:
MediaQuery.of(context).size.width *
0.35,
maxHeight: 20,
minHeight: 20,
),
child: AutoSizeText(
…,
maxFontSize: 20.0,
),
),
),
),
],
),
行(
mainAxisAlignment:mainAxisAlignment.spaceBetween,
儿童:[
升起的按钮(
按下:()…
颜色:App.focusColor,
形状:圆形矩形边框(
边界半径:新边界半径。圆形(50.0),
侧边:边框侧边(颜色:App.primaryColor),
),
子:约束框(
约束:BoxConstraints(
minWidth:MediaQuery.of(context).size.width*0.1,
maxWidth:MediaQuery.of(context).size.width*0.35,
最大高度:20,
身高:20,
),
孩子:FittedBox(
适合:BoxFit.fitWidth,
子:文本(
…),
),
),
),
升起的按钮(
按下:()…
颜色:App.focusColor,
形状:圆形矩形边框(
边界半径:新边界半径。圆形(50.0),
侧边:边框侧边(颜色:App.primaryColor),
),
子:约束框(
约束:BoxConstraints(
最小宽度:
MediaQuery.of(context).size.width*0.1,
最大宽度:
MediaQuery.of(context).size.width*
0.35,
最大高度:20,
身高:20,
),
子对象:AutoSizeText(
…,
maxFontSize:20.0,
),
),
),
),
],
),
此代码存在的问题是,两个RaisedButtons的fontSize不相等。如何确保fontSize相等,但RaisedButtons仍然可以变宽(如果textlength不相等,我希望RaisedButtons确实有不同的大小)
除此之外,如果我有多行有两个升起的按钮,我希望所有的FontSize总是相等的
非常感谢您的时间。请检查以下答案。无需使用FittedBox
final text = 'It is a long title for button';
Row(
mainAxisAlignment: MainAxisAlignment.spaceBetween,
children: [
RaisedButton(
onPressed: () {},
color: App.focusColor,
shape: RoundedRectangleBorder(
borderRadius: new BorderRadius.circular(50.0),
side: BorderSide(color: App.primaryColor),
),
child: ConstrainedBox(
constraints: BoxConstraints(
minWidth: MediaQuery.of(context).size.width * 0.1,
maxWidth: MediaQuery.of(context).size.width * 0.35,
),
child: Text(text.length > 10 ? '${text.substring(0, 10)}...' : text),
),
),
RaisedButton(
onPressed: () {},
color: App.focusColor,
shape: RoundedRectangleBorder(
borderRadius: new BorderRadius.circular(50.0),
side: BorderSide(color: App.primaryColor),
),
child: ConstrainedBox(
constraints: BoxConstraints(
minWidth: MediaQuery.of(context).size.width * 0.1,
maxWidth: MediaQuery.of(context).size.width * 0.35,
),
child: Text("abcaaa"),
),
),
],
)
请检查下面的答案。无需使用FittedBox
final text = 'It is a long title for button';
Row(
mainAxisAlignment: MainAxisAlignment.spaceBetween,
children: [
RaisedButton(
onPressed: () {},
color: App.focusColor,
shape: RoundedRectangleBorder(
borderRadius: new BorderRadius.circular(50.0),
side: BorderSide(color: App.primaryColor),
),
child: ConstrainedBox(
constraints: BoxConstraints(
minWidth: MediaQuery.of(context).size.width * 0.1,
maxWidth: MediaQuery.of(context).size.width * 0.35,
),
child: Text(text.length > 10 ? '${text.substring(0, 10)}...' : text),
),
),
RaisedButton(
onPressed: () {},
color: App.focusColor,
shape: RoundedRectangleBorder(
borderRadius: new BorderRadius.circular(50.0),
side: BorderSide(color: App.primaryColor),
),
child: ConstrainedBox(
constraints: BoxConstraints(
minWidth: MediaQuery.of(context).size.width * 0.1,
maxWidth: MediaQuery.of(context).size.width * 0.35,
),
child: Text("abcaaa"),
),
),
],
)
您可以使用
FittedBox
根据RaisedButton
的高度或宽度来管理文本。
因此,只需将文本包装在一个FittedBox
BoxConstraints(
/* max height and other attribute
...
*/
child: FittedBox(fit:BoxFit.fitWidth, child: Text('MUONEWOrdTEXT'),),
),
您可以使用
FittedBox
根据RaisedButton
的高度或宽度来管理文本。
因此,只需将文本包装在一个FittedBox
BoxConstraints(
/* max height and other attribute
...
*/
child: FittedBox(fit:BoxFit.fitWidth, child: Text('MUONEWOrdTEXT'),),
),
请切记答案请切记答案但现在如果文本是“aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa。这意味着我只能有一行文本。我更新了上面的代码,所以这意味着“aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa。我希望文本缩小。另一个升起的按钮的文本也应该相应地缩小。好的,也有可能,你想显示多少个字母,但是现在如果文本是“aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa,你不需要它我应该提到我有一个maxHeight,比如:maxHeight:20。这意味着我只能有一行文本。我更新了上面的代码,所以这意味着“aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa。我希望文本缩小。A另一个升起的按钮的文本也应该相应地收缩。好的,也有可能,你想显示多少个字母