最近,我选择为我的所有页面创建一个$_SESSION['cart']= array_values($_SESSION['cart']);
,但自从它陷入困境以来。我得到黑屏和以下错误,请注意,我在任何页面中都没有FAB或Hero小部件。我已经尝试运行PageRouteBuilder
和flutter clean
,但是没有给出指向该错误的实质性错误消息。我有多个页面,并且可以处理以下页面的所有导航。后来我决定像以前一样将其返回到flutter run -v
,虽然工作正常,但仍然遇到相同的错误。我在这里茫然。
MaterialPageRoute
这是我的路线课程:
There are multiple heroes that share the same tag within a subtree.
[38;5;244mWithin each subtree for which heroes are to be animated (i.e. a PageRoute subtree), each Hero must have a unique non-null tag.
In this case, multiple heroes had the following tag: <default FloatingActionButton tag>
[39;49m[38;5;244mHere is the subtree for one of the offending heroes: Hero[39;49m
[38;5;244mtag: <default FloatingActionButton tag>[39;49m
[38;5;244mstate: _HeroState#69670[39;49m
[38;5;244mWhen the exception was thrown, this was the stack[39;49m
[38;5;244m#0 Hero._allHeroesFor.inviteHero.<anonymous closure>[39;49m
[38;5;244m#1 Hero._allHeroesFor.inviteHero[39;49m
[38;5;244m#2 Hero._allHeroesFor.visitor[39;49m
[38;5;244m#3 SingleChildRenderObjectElement.visitChildren[39;49m
[38;5;244m#4 Hero._allHeroesFor.visitor[39;49m
[38;5;244m...[39;49m
这是PageRoutBuilder:
import 'package:drip/builders/authorsuploads.dart';
import 'package:drip/home/homemain.dart';
import 'package:drip/initials/profile.dart';
import 'package:drip/initials/login.dart';
import 'package:drip/initials/wrapper.dart';
import 'package:drip/models/pageroutebuilder.dart';
import 'package:drip/products/fragrances.dart';
import 'package:drip/products/gifts.dart';
import 'package:drip/products/hair.dart';
import 'package:drip/products/makeup.dart';
import 'package:drip/products/others.dart';
import 'package:drip/products/productdetail.dart';
import 'package:drip/products/sanitary.dart';
import 'package:drip/products/shoppingcart.dart';
import 'package:drip/products/skin.dart';
import 'package:drip/providers/periodtracker.dart';
import 'package:drip/services/settings.dart';
import 'package:drip/storyDetails.dart';
import 'package:drip/temporarypages/addproduct.dart';
import 'package:drip/uploads/newArticle.dart';
import 'package:drip/uploads/newPage.dart';
import 'package:drip/uploads/newPhoto.dart';
import 'package:drip/uploads/newText.dart';
import 'package:drip/uploads/upload.dart';
import 'package:drip/uploads/upload_router.dart';
import 'package:flutter/material.dart';
import 'package:shared_preferences/shared_preferences.dart';
import 'initials/loading.dart';
class Router {
Route<dynamic> generateRoute(RouteSettings settings) {
var args = settings.arguments;
var name = settings.name;
switch (name) {
case '/':
return BouncyPageRoute(widget:Loading(),
);
break;
case 'homemain':
return BouncyPageRoute(widget:HomeMain(),
);
break;
case 'login':
return BouncyPageRoute(widget:LoginPage(),
);
break;
case 'shopping_cart':
return BouncyPageRoute(widget:ShoppingCart(),
);
break;
case 'upload_media':
return BouncyPageRoute(widget:Upload(
file: args,
),
);
break;
case 'upload_router':
return BouncyPageRoute(widget:UploadRouter(
image: args,
),
);
break;
case 'product_details':
if (args is Map) {
return MaterialPageRoute(
builder: (_) => ProductDetails(product: args),
);
}
break;
case 'new_page':
return BouncyPageRoute(widget:New(),
);
break;
case 'settings':
return BouncyPageRoute(widget:Settings(),
);
break;
case 'add_product':
return BouncyPageRoute(widget:Add(),
);
break;
case 'profile':
return BouncyPageRoute(widget:UserProfile(
userOrAuthorId: args,
),
);
break;
case 'authors_uploads':
return BouncyPageRoute(widget:AuthorsUpload(
authorId: args,
),
);
break;
case 'new_article':
return BouncyPageRoute(widget:NewArticle(
uploadedImageUrl: args,
),
);
break;
case 'new_text':
return BouncyPageRoute(widget:NewText(),
);
break;
case 'new_photo':
return BouncyPageRoute(widget:Photo(),
);
break;
case 'comments':
return BouncyPageRoute(widget:Comments(),
);
break;
case 'story_details':
if (args is Map) {
return MaterialPageRoute(
builder: (_) => Story(args),
);
}
break;
case 'fragrances':
return BouncyPageRoute(widget:Fragrances(),
);
break;
case 'hair':
return BouncyPageRoute(widget:HairProducts(),
);
break;
case 'skin':
return BouncyPageRoute(widget:SkinProducts(),
);
break;
case 'gifts':
return BouncyPageRoute(widget:Gifts(),
);
break;
case 'others':
return BouncyPageRoute(widget:Others(),
);
break;
case 'makeup':
return BouncyPageRoute(widget:MakeUp(),
);
break;
case 'sanitary':
return BouncyPageRoute(widget:Sanitary(),
);
break;
case 'wrapper':
return BouncyPageRoute(widget:Wrapper(),
);
break;
default:
return BouncyPageRoute(widget:Scaffold(
appBar: AppBar(
title: Text('Error'),
),
body: Center(
child: Text('No route named: $name'),
)),
);
break;
}
}
}
-----------编辑------------------------------- 这是我仅有的FAB:
import 'package:flutter/material.dart';
class BouncyPageRoute extends PageRouteBuilder {
Widget widget;
BouncyPageRoute({
@required this.widget,
}) : super(
transitionDuration: Duration(seconds: 1),
transitionsBuilder: (
context,
animation,
secanimation,
child,
) {
animation = CurvedAnimation(
parent: animation,
curve: Curves.elasticInOut,
);
return ScaleTransition(
scale: animation,
alignment: Alignment.center,
child: child,
);
},
pageBuilder: (
context,
animation,
secanimation,
) {
return widget;
},
);
}
和
FloatingActionButton.extended(heroTag: 'hbhbhbvgc',
isExtended: true,
icon: Icon(Icons.near_me),
label: Padding(
padding: const EdgeInsets.all(8.0),
child: Text(
'Update Info',
style: Theme.of(context).textTheme.button,
),
),
onPressed: updateInfoCallback,
),