首页 文章

用于TextField的颤振扩展面板

提问于
浏览
1

振动的扩展面板很棒 . 它们需要 Headers 和正文以及isExpanded属性才能声明能够构建扩展面板 . 像这样:

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

我想构建一个可扩展的TextField . 我可以使用Expansion面板包装文本字段,并将TextField指定为Body . 但是在头部和身体之间有一个很大的空白区域 . 此外,我想只是扩展主体并完全删除 Headers ,这样我就可以看到第一个文本行而不扩展,当我展开扩展面板时,身体的其余部分会打开 . 有谁知道这方面的任何工作?或者我可以使用任何不同的小部件或材料组件 .

下面是它现在看起来的截图,看看 Headers 和正文之间有很多间距 .

enter image description here

如果这个问题让你感兴趣,请提出它,以便得出更好的答案 . Flutter有很多未来,我们需要一个更强大的堆栈溢出社区 .

1 回答

  • 0

    我不确定 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;
        });
      }
    }
    

    这里没有动画,所以它相当突然 . 您可以随意自定义上面的小部件以满足您的需求 .

相关问题