我想使用一个英雄widget。但是我得到了这个错误,我真的不知道错误在哪里:
在调度程序回调期间引发了以下Assert:在一个子树中有多个英雄共享同一个标签。
这是我使用Hero widget的代码的一部分:
class _Scrapbook extends State<Scrapbook> {
@override
Widget build(BuildContext context) {
return Scaffold(
body: Padding(
padding: const EdgeInsets.symmetric(vertical:8.0, horizontal: 0.0),
child: Stack(
children:[
Positioned(
top: 80,
bottom: 20,
left: 100,
child: Text("Scrapbook", style: TextStyle(fontSize: 30, fontWeight: FontWeight.bold))
),
Positioned(
top: 120,
bottom: 0,
width: MediaQuery.of(context).size.width,
child: Column(
children: [
Expanded(child: GridView.builder(gridDelegate: SliverGridDelegateWithFixedCrossAxisCount(
crossAxisCount: 2,
childAspectRatio: 1.4,
),itemCount: 100,
itemBuilder: (context, index) {
return InkWell(
child: Padding(
padding: const EdgeInsets.symmetric(vertical:4.0, horizontal: 6.0),
child: Hero(
tag: "dash",
child: Card(
color: Colors.amber,
semanticContainer: true,
shape: RoundedRectangleBorder(
borderRadius: BorderRadius.circular(10.0),
),
child: Column(
children: [
Text("POI"),
Flexible(child: Image.asset("assets/images/Rathaus.jpg")),
],
),
),
),
),
onTap: () {
Navigator.push(context, MaterialPageRoute(builder: (_) => ScrapbookDetails()));
},
);
},
))
],
),
),
],
),
)
);
}
}
这里我再次使用它:
class ScrapbookDetails extends StatefulWidget {
const ScrapbookDetails({super.key});
@override
State<ScrapbookDetails> createState() => _ScrapbookDetails();
}
class _ScrapbookDetails extends State<ScrapbookDetails> {
@override
Widget build(BuildContext context) {
return Scaffold(
body: Center(
child:Hero(tag: "dash",
child: Image.asset("assets/images/Rathaus.jpg")),
),
);
}
}
如果你们能帮忙我会很感激的。感谢您的评分
我尝试了一个解决方案,从不同的职位,但它不是真的有帮助。
1条答案
按热度按时间bjg7j2ky1#
你的
itemBuilder
用相同的键重新调整英雄部件,当Hero键在小部件内时,您可以使用构造函数传递它。