gpt4 book ai didi

dart - Flutter- TextField 的扩展面板

转载 作者:IT王子 更新时间:2023-10-29 06:41:31 24 4
gpt4 key购买 nike

flutter 中的扩展面板很棒。它们需要声明 header 和正文以及 isExpanded 属性才能构建扩展面板。像这样:

return new ExpansionPanel(
headerBuilder: (BuildContext context, bool isExpanded){
return Text('header');},
isExpanded: false,
body: new Text(body[enter image description here][1]),
);

我想构建一个 Expandable TextField。我可以用 Expansion 面板包装文本字段,并将 TextField 指定为 Body。但是标题和正文之间有一个很大的空白。另外,我只想展开正文并完全删除标题,这样我就可以在不展开的情况下看到正文的第一行文本,当我展开扩展面板时,正文的其余部分会打开。有谁知道这方面的任何解决方法?或者我可以使用的任何不同的小部件或 Material 组件。

这是现在的截图,可以看到页眉和正文之间有很多间距。

enter image description here

如果您对这个问题感兴趣,请为其点赞,以获得更好的答案。 Flutter 有很多 future ,我们需要一个更强大的堆栈溢出社区。

最佳答案

我不确定 ExpansionPanel 是否是您想要的。

如果我没理解错的话,您需要一个具有两种状态的 Text。在第一种状态下,Text 只有一行,在第二种状态下,Text 可以显示所有行。当用户点击此小部件时,它会从一种状态切换到另一种状态。

我为此创建了一个简单的小部件:

class ExpandableText extends StatefulWidget {
const ExpandableText(
this.data, {
Key key,
}) : super(key: key);

/// The text to display.
///
/// This will be null if a [textSpan] is provided instead.
final String data;

@override
_ExpandableTextState createState() => new _ExpandableTextState();
}

class _ExpandableTextState extends State<ExpandableText> {
bool _isExpanded = false;

@override
Widget build(BuildContext context) {
return GestureDetector(
onTap: _handleOnTap,
child: new Text(
widget.data,
maxLines: _isExpanded ? null : 1,
),
);
}

void _handleOnTap() {
setState(() {
_isExpanded = !_isExpanded;
});
}
}

这里没有动画所以比较生硬。请随意自定义上述小部件以满足您的需求。

关于dart - Flutter- TextField 的扩展面板,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51472005/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com