【发布时间】:2020-03-03 03:31:54
【问题描述】:
我有一个带有文本的按钮,当我按下按钮时,具有相同文本的文本小部件会添加到同一页面。 我想在它们之间添加类似英雄的动画。 我想我需要的是 SlideTransition,但我不知道如何从一个小部件位置滑动到另一个小部件位置。 有可能吗?我应该查看什么小部件(或类)?
这是我想做的代码(但由于 Hero 不能在相同的页面小部件上工作,所以无法工作):
import 'package:flutter/material.dart';
void main() => runApp(MyApp());
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return MaterialApp(
home: MyHomePage(),
);
}
}
class MyHomePage extends StatefulWidget {
@override
_MyHomePageState createState() => _MyHomePageState();
}
class _MyHomePageState extends State<MyHomePage> {
List<String> text = [];
String buttonTag = "0";
@override
Widget build(BuildContext context) {
List<Widget> textWidgets = [];
for (int i = 0; i < text.length; ++i) {
textWidgets.add(
Padding(
padding: const EdgeInsets.all(8.0),
child: Hero(tag: "${i}", child: Text(text[i])),
)
);
}
return SafeArea(
child: Scaffold(
body: Center(
child: Column(
children: <Widget>[
RaisedButton(
child: Hero(
tag: buttonTag,
child: Text("abcde${text.length}")),
onPressed: () {
setState(() {
text.add("abcde${text.length}");
buttonTag = "${text.length}";
});
},
)
] + textWidgets,
),
),
),
);
}
}
【问题讨论】: