首页 > 解决方案 > 在 MarqueeWidget 中将文本字段添加为子项会导致空白屏幕

问题描述

选框小部件类

我想创建一个文本字段,您可以在其中输入关于段落的内容。所以,这就是为什么这个类是可用的。请检查错误。

class MarqueeWidget extends StatefulWidget {
  final Widget child;
  final Axis direction;
  final Duration animationDuration, backDuration, pauseDuration;

  MarqueeWidget({
    @required this.child,
    this.direction: Axis.horizontal,
    this.animationDuration: const Duration(milliseconds: 3000),
    this.backDuration: const Duration(milliseconds: 800),
    this.pauseDuration: const Duration(milliseconds: 800),
  });

  @override
  _MarqueeWidgetState createState() => _MarqueeWidgetState();
}

class _MarqueeWidgetState extends State<MarqueeWidget> {
  ScrollController scrollController;

  @override
  void initState() {
    scrollController = ScrollController(initialScrollOffset: 50.0);
    WidgetsBinding.instance.addPostFrameCallback(scroll);
    super.initState();
  }

  @override
  void dispose() {
    scrollController.dispose();
    super.dispose();
  }

  @override
  Widget build(BuildContext context) {
    return SingleChildScrollView(
      child: widget.child,
      scrollDirection: widget.direction,
      controller: scrollController,
    );
  }

  void scroll(_) async {
    while (scrollController.hasClients) {
      await Future.delayed(widget.pauseDuration);
      if (scrollController.hasClients)
        await scrollController.animateTo(
            scrollController.position.maxScrollExtent,
            duration: widget.animationDuration,
            curve: Curves.ease);
      await Future.delayed(widget.pauseDuration);
      if (scrollController.hasClients)
        await scrollController.animateTo(0.0,
            duration: widget.backDuration, curve: Curves.easeOut);
    }
  }
}

我想创建一个文本字段,您可以在其中输入关于段落的内容。所以,这就是为什么这个类是可用的。请检查错误。Marquee Widget 的使用之后,我运行该应用程序。它什么也不显示。那么,现在该怎么办。

Padding(
            padding: const EdgeInsets.all(8.0),
            child: Expanded(
              child: MarqueeWidget(
                direction: Axis.horizontal,
                child: TextField(
                  keyboardType: TextInputType.multiline,
                  maxLines: null,
                  onChanged: (value) {
                    about = value;
                  },
                  decoration: InputDecoration(
                    hintText: widget.currentUser.about,
                  ),
                  style: TextStyle(color: Colors.black),
                ),
              ),
            ),
          ),

标签: flutter

解决方案


推荐阅读