Animation Flare艺术板项目在Flare角色上渲染需要时间
我有一个Flare字符,当我更新节点时,我必须按它们的节点显示一些项目,并且项目显示在字符上,这需要一些时间并且会延迟,在我的Animation Flare艺术板项目在Flare角色上渲染需要时间,animation,dart,flutter,flare,Animation,Dart,Flutter,Flare,我有一个Flare字符,当我更新节点时,我必须按它们的节点显示一些项目,并且项目显示在字符上,这需要一些时间并且会延迟,在我的character类中,每当我点击项目选择项目时,整个类都在更新,它的initState再次调用,我正在使用ScopedModel更新状态 这是我正在使用的flare角色的链接 我的main.dart class _MyAppState extends State<MyApp> { @override Widget build(BuildContex
character
类中,每当我点击项目选择项目时,整个类都在更新,它的initState再次调用,我正在使用ScopedModel
更新状态
这是我正在使用的flare角色的链接
我的main.dart
class _MyAppState extends State<MyApp> {
@override
Widget build(BuildContext context) {
Item item1 = Item('brac1');
Item item2 = Item('glasses1');
return MaterialApp(
home: ScopedModel<AppModel>(
model: AppModel(),
child: Scaffold(
body: Container(
child: Column(
children: <Widget>[
Expanded(
flex: 6,
child: ScopedModelDescendant<AppModel>(
builder: (context, child, model) {
return ChimpCharacter(
itemNames: model.items,
key: UniqueKey(),
);
}),
),
Expanded(
flex: 4,
child: ScopedModelDescendant<AppModel>(
builder: (context, child, model) {
return Wrap(
spacing: 100.0,
children: <Widget>[
RaisedButton(
color: Colors.blue,
elevation: 3.0,
onPressed: () {
model.addItem(item1);
print('model is ${model.items}');
},
child: Text('Braclet'),
),
RaisedButton(
color: Colors.blue,
elevation: 3.0,
onPressed: () {
model.addItem(item2);
print('model is ${model.items}');
},
child: Text('Glasses'),
),
],
);
},
),
),
],
),
),
),
),
);
}
}
import 'package:scoped_model/scoped_model.dart';
class AppModel extends Model {
List<Item> _items = [];
List<Item> get items => _items;
void addItem(Item item) {
this._items = items;
if (_items.contains(item)) {
_items.remove(item);
} else {
_items.add(item);
}
notifyListeners();
}
}
class Item {
String itemName;
Item(this.itemName);
}
我的黑猩猩,飞镖
class ChimpCharacter extends StatefulWidget {
ChimpCharacter({Key key, this.itemNames}) : super(key: key);
final List<Item> itemNames;
@override
_ChimpCharacterState createState() => _ChimpCharacterState();
}
class _ChimpCharacterState extends State<ChimpCharacter>
implements FlareController {
List<String> items = [];
FlareController flareController;
@override
void initState() {
super.initState();
print('initState called ');
if (widget.itemNames != null) {
widget.itemNames.map((s) {
items.add(s.itemName);
}).toList(growable: false);
}
}
@override
Widget build(BuildContext context) {
return FlareActor(
'assets/chimp.flr',
alignment: Alignment.center,
fit: BoxFit.contain,
animation: 'walking',
controller: this,
);
}
@override
bool advance(FlutterActorArtboard artboard, double elapsed) {
// print('advance');
if (items != null) {
items.forEach((String item) {
final ActorNode acceName = artboard.getNode(item);
acceName.collapsedVisibility = false;
});
}
return false;
}
@override
void initialize(FlutterActorArtboard artboard) {}
@override
void setViewTransform(Mat2D viewTransform) {
print('setViewTransform');
}
@override
ValueNotifier<bool> isActive;
}
类字符扩展StatefulWidget{
字符({Key Key,this.itemNames}):super(Key:Key);
最后清单项目名称;
@凌驾
_ChimpCharacterState createState()=>\u ChimpCharacterState();
}
类_characterState扩展了状态
电子控制器{
列表项=[];
火炬控制器火炬控制器;
@凌驾
void initState(){
super.initState();
打印('initState called');
if(widget.itemNames!=null){
widget.itemNames.map((s){
项目。添加(s.itemName);
}).toList(可增长:假);
}
}
@凌驾
小部件构建(构建上下文){
回程扩口器(
“资产/chimp.flr”,
对齐:对齐.center,
适合:BoxFit.contain,
动画:《行走》,
控制员:这个,
);
}
@凌驾
bool advance(颤振板艺术板,双行程){
//打印(“预付款”);
如果(项!=null){
items.forEach((字符串项){
最终ActorNode acceName=artboard.getNode(项目);
acceName.collapsedVisibility=false;
});
}
返回false;
}
@凌驾
void初始化(拉板艺术板){}
@凌驾
void setViewTransform(Mat2D viewTransform){
打印('setViewTransform');
}
@凌驾
估价师是活跃的;
}