因此,我尝试在编辑一些实体值后更新栏中的动画文本。实际上,我从帖子中添加或删除“标签”,但是当我返回到帖子视图时,在两种情况下(添加或删除),动画文本只会引发以下错误(我正在使用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>
这是通常的样子
这是我添加/删除一些标签时看到的
刷新后,一切都会恢复正常,新标签在那里,或者我删除的标签都没有。我认为插件代码(https://github.com/aagarwal1012/Animated-Text-Kit/blob/master/lib/src/scale.dart)中存在问题,但我不知道需要修改什么。