为什么我得到“在子树中有多个共享相同标签的英雄”却没有FAB或Hero小部件?

时间:2020-06-21 12:58:02

标签: flutter dart

最近,我选择为我的所有页面创建一个$_SESSION['cart']= array_values($_SESSION['cart']);,但自从它陷入困境以来。我得到黑屏和以下错误,请注意,我在任何页面中都没有FAB或Hero小部件。我已经尝试运行PageRouteBuilderflutter 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,
                              ),

0 个答案:

没有答案