我检查了其他 Stack Overflow 答案,并建议它与浮动操作按钮有关,但是:
Error:
Exception caught by scheduler library =====================================================
The following assertion was thrown during a scheduler callback:
There are multiple heroes that share the same tag within a subtree.
class RadialMenuExample extends StatelessWidget {
const RadialMenuExample({super.key});
@override
Widget build(BuildContext context) {
return Scaffold(
backgroundColor: Colors.black87,
appBar: AppBar(
backgroundColor: Colors.black45,
title: const Text("Animated Radial Menu Example"),
centerTitle: true,
),
body: RadialMenu(
children: [
RadialButton(
icon: const Icon(Icons.ac_unit),
buttonColor: Colors.teal,
onPress: () => Navigator.push(
context,
MaterialPageRoute(builder: (_) => const TargetScreen()),
),
),
RadialButton(
icon: const Icon(Icons.camera_alt),
buttonColor: Colors.green,
onPress: () => Navigator.push(
context,
MaterialPageRoute(builder: (_) => const TargetScreen()),
),
), e.t.c
class TargetScreen extends StatelessWidget {
const TargetScreen({super.key});
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(title: const Text("Target Screen")),
);
}
}
包:https://pub.dev/packages/animated_radial_menu
这个包已经过时了,最后更新是在 3 年前。您应该将其替换为更新且受支持的软件包,或者您应该从 github 分叉存储库并将“heroTag”变量赋予 FloatingActionButton 部分。
这是您的问题的原因:https://api.flutter.dev/flutter/material/FloatingActionButton/heroTag.html
如果没有明确设置,那么每条路线(即每个屏幕)只能有一个 FloatingActionButton,否则会出现标签冲突(一条路线上的多个英雄不能有相同的标签)。 Material Design 规范建议每个屏幕仅使用一个浮动操作按钮。