在setState()之后,如何用动画文本更新小部件?

时间:2020-07-22 04:48:04

标签: android-studio flutter dart

因此,我尝试在编辑一些实体值后更新栏中的动画文本。实际上,我从帖子中添加或删除“标签”,但是当我返回到帖子视图时,在两种情况下(添加或删除),动画文本只会引发以下错误(我正在使用animation_text_kit插件):

The following RangeError was thrown building ScaleAnimatedTextKit(dirty, dependencies: [_EffectiveTickerMode], state: _ScaleTextState#07f27(tickers: tracking 3 tickers)):
RangeError (index): Invalid value: Not in range 0..1, inclusive: 2

就像当我从子小部件(编辑帖子的那个)执行setState()时,小部件不会重新构建。 我尝试使用另一个插件,但更糟糕的是,我试图创建一个具有“ AnimatedText”类型的变量“ bar”,当我调用setState()但不起作用时尝试“更新”。

以下是小部件中要编辑的代码(仅包含查询的部分):

class EditPost extends StatefulWidget {
  Post post;
  List<String> values;
  String description;
  int cant;
  bool must_be_seen;
  final Function() notifyParent;
  createState() => _EditPostState();
  EditPost({Key key, @required this.notifyParent ,@required this.post,@required this.values,@required this.description,@required this.cant,@required this.must_be_seen}) : super(key: key);
}

class _EditPostState extends State<EditPost> {
  //query para crear post
  Future<void> editPost() async {
    SharedPreferences sharedPreferences = await SharedPreferences.getInstance();
    String email = sharedPreferences.getString('email');
    Map data = {
      'description': widget.description,
      'labels' : widget.values
    };
    ...

在其下面的动画小部件栏代码:

import 'package:animated_text_kit/animated_text_kit.dart';
import 'package:flutter/material.dart';
//import 'package:animated_text/animated_text.dart';

class LabelsBar extends StatefulWidget {

  final List<String> labels;

  LabelsBar({
    Key key,
    @required this.labels,
  }) : super(key: key);

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

class _LabelsBarState extends State<LabelsBar> {
  @override
  Widget build(BuildContext context) {
    return  ScaleAnimatedTextKit(
        repeatForever: true,
        onTap: () {
          print("Tap Event");
        },
        text: widget.labels,
        textStyle: TextStyle(
          color: Colors.white,
          fontSize: 16.0,
          fontWeight: FontWeight.bold,
        ),
        textAlign: TextAlign.start,
        alignment: AlignmentDirectional.topStart // or Alignment.topLeft
    );
  }
}

这就是我显示栏的方式:

...
Row(
              children: <Widget>[
 
                Align(
                  alignment: Alignment.center,
                  child: new LabelsBar(labels: widget.post.labels),
                    
                  ),
 ),
...

在该小部件中,我也具有refresh方法,我想在子小部件中调用该方法:

  refresh() {
  setState(() {});
  }

我知道编辑小部件没有问题,原因是“如果刷新视图,或者我只是稍微上移/下移,错误就消失了,但是我需要显示没有该错误的编辑结果。” / p>

这是通常的样子

enter image description here

这是我添加/删除一些标签时看到的

enter image description here

刷新后,一切都会恢复正常,新标签在那里,或者我删除的标签都没有。我认为插件代码(https://github.com/aagarwal1012/Animated-Text-Kit/blob/master/lib/src/scale.dart)中存在问题,但我不知道需要修改什么。

0 个答案:

没有答案