android – Coudn’t Move from page to page – Navigator.push – Flutter


I am working on an app that have a home page and a settings page so i want to move between them with an icon button in the appbar so i used navigator.push method but the app freezez and dosenot do any thing and when i restart it gives me this 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.
Within 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>
├# Here is the subtree for one of the offending heroes: Hero

When the exception was thrown, this was the stack:
#0      Hero._allHeroesFor.inviteHero.<anonymous closure> (package:flutter/src/widgets/heroes.dart:278:11)
#1      Hero._allHeroesFor.inviteHero (package:flutter/src/widgets/heroes.dart:289:8)
#2      Hero._allHeroesFor.visitor (package:flutter/src/widgets/heroes.dart:307:11)
#3      SingleChildRenderObjectElement.visitChildren (package:flutter/src/widgets/framework.dart:6420:14)
#4      Hero._allHeroesFor.visitor (package:flutter/src/widgets/heroes.dart:322:15)
#5      ComponentElement.visitChildren (package:flutter/src/widgets/framework.dart:5349:14)
#6      Hero._allHeroesFor.visitor (package:flutter/src/widgets/heroes.dart:322:15)
#7      MultiChildRenderObjectElement.visitChildren (package:flutter/src/widgets/framework.dart:6532:16)
#8      Hero._allHeroesFor.visitor (package:flutter/src/widgets/heroes.dart:322:15)
#9      SingleChildRenderObjectElement.visitChildren (package:flutter/src/widgets/framework.dart:6420:14)
#10     Hero._allHeroesFor.visitor (package:flutter/src/widgets/heroes.dart:322:15)
#11     ComponentElement.visitChildren (package:flutter/src/widgets/framework.dart:5349:14)
#12     Hero._allHeroesFor.visitor (package:flutter/src/widgets/heroes.dart:322:15)
#13     SingleChildRenderObjectElement.visitChildren (package:flutter/src/widgets/framework.dart:6420:14)
#14     Hero._allHeroesFor.visitor (package:flutter/src/widgets/heroes.dart:322:15)
#15     ComponentElement.visitChildren (package:flutter/src/widgets/framework.dart:5349:14)
#16     Hero._allHeroesFor.visitor (package:flutter/src/widgets/heroes.dart:322:15)
#17     MultiChildRenderObjectElement.visitChildren (package:flutter/src/widgets/framework.dart:6532:16)
#18     Hero._allHeroesFor.visitor (package:flutter/src/widgets/heroes.dart:322:15)
#19     ComponentElement.visitChildren (package:flutter/src/widgets/framework.dart:5349:14)
#20     Hero._allHeroesFor.visitor (package:flutter/src/widgets/heroes.dart:322:15)
#21     ComponentElement.visitChildren (package:flutter/src/widgets/framework.dart:5349:14)
#22     Hero._allHeroesFor.visitor (package:flutter/src/widgets/heroes.dart:322:15)
#23     ComponentElement.visitChildren (package:flutter/src/widgets/framework.dart:5349:14)
#24     Hero._allHeroesFor.visitor (package:flutter/src/widgets/heroes.dart:322:15)
#25     MultiChildRenderObjectElement.visitChildren (package:flutter/src/widgets/framework.dart:6532:16)
#26     Hero._allHeroesFor.visitor (package:flutter/src/widgets/heroes.dart:322:15)
#27     ComponentElement.visitChildren (package:flutter/src/widgets/framework.dart:5349:14)
#28     Hero._allHeroesFor.visitor (package:flutter/src/widgets/heroes.dart:322:15)
#29     ComponentElement.visitChildren (package:flutter/src/widgets/framework.dart:5349:14)
#30     Hero._allHeroesFor.visitor (package:flutter/src/widgets/heroes.dart:322:15)
#31     ComponentElement.visitChildren (package:flutter/src/widgets/framework.dart:5349:14)
#32     Hero._allHeroesFor.visitor (package:flutter/src/widgets/heroes.dart:322:15)
#33     ComponentElement.visitChildren (package:flutter/src/widgets/framework.dart:5349:14)
#34     Hero._allHeroesFor.visitor (package:flutter/src/widgets/heroes.dart:322:15)
#35     ComponentElement.visitChildren (package:flutter/src/widgets/framework.dart:5349:14)
#36     Hero._allHeroesFor.visitor (package:flutter/src/widgets/heroes.dart:322:15)
#37     SingleChildRenderObjectElement.visitChildren (package:flutter/src/widgets/framework.dart:6420:14)
#38     Hero._allHeroesFor.visitor (package:flutter/src/widgets/heroes.dart:322:15)
#39     ComponentElement.visitChildren (package:flutter/src/widgets/framework.dart:5349:14)
#40     Hero._allHeroesFor.visitor (package:flutter/src/widgets/heroes.dart:322:15)
#41     SingleChildRenderObjectElement.visitChildren (package:flutter/src/widgets/framework.dart:6420:14)
#42     Hero._allHeroesFor.visitor (package:flutter/src/widgets/heroes.dart:322:15)
#43     ComponentElement.visitChildren (package:flutter/src/widgets/framework.dart:5349:14)
#44     Hero._allHeroesFor.visitor (package:flutter/src/widgets/heroes.dart:322:15)
#45     ComponentElement.visitChildren (package:flutter/src/widgets/framework.dart:5349:14)
#46     Hero._allHeroesFor.visitor (package:flutter/src/widgets/heroes.dart:322:15)
#47     ComponentElement.visitChildren (package:flutter/src/widgets/framework.dart:5349:14)
#48     Hero._allHeroesFor.visitor (package:flutter/src/widgets/heroes.dart:322:15)
#49     ComponentElement.visitChildren (package:flutter/src/widgets/framework.dart:5349:14)
#50     Hero._allHeroesFor.visitor (package:flutter/src/widgets/heroes.dart:322:15)
#51     ComponentElement.visitChildren (package:flutter/src/widgets/framework.dart:5349:14)
#52     Hero._allHeroesFor.visitor (package:flutter/src/widgets/heroes.dart:322:15)
#53     ComponentElement.visitChildren (package:flutter/src/widgets/framework.dart:5349:14)
#54     Hero._allHeroesFor.visitor (package:flutter/src/widgets/heroes.dart:322:15)
#55     ComponentElement.visitChildren (package:flutter/src/widgets/framework.dart:5349:14)
#56     Hero._allHeroesFor.visitor (package:flutter/src/widgets/heroes.dart:322:15)
#57     ComponentElement.visitChildren (package:flutter/src/widgets/framework.dart:5349:14)
#58     Hero._allHeroesFor.visitor (package:flutter/src/widgets/heroes.dart:322:15)
#59     ComponentElement.visitChildren (package:flutter/src/widgets/framework.dart:5349:14)
#60     Hero._allHeroesFor.visitor (package:flutter/src/widgets/heroes.dart:322:15)
#61     SingleChildRenderObjectElement.visitChildren (package:flutter/src/widgets/framework.dart:6420:14)
#62     Hero._allHeroesFor.visitor (package:flutter/src/widgets/heroes.dart:322:15)
#63     ComponentElement.visitChildren (package:flutter/src/widgets/framework.dart:5349:14)
#64     Hero._allHeroesFor.visitor (package:flutter/src/widgets/heroes.dart:322:15)
#65     SingleChildRenderObjectElement.visitChildren (package:flutter/src/widgets/framework.dart:6420:14)
#66     Element.visitChildElements (package:flutter/src/widgets/framework.dart:3581:5)
#67     Hero._allHeroesFor (package:flutter/src/widgets/heroes.dart:325:13)
#68     HeroController._startHeroTransition (package:flutter/src/widgets/heroes.dart:932:14)
#69     HeroController._maybeStartHeroTransition.<anonymous closure> (package:flutter/src/widgets/heroes.dart:891:9)
#70     SchedulerBinding._invokeFrameCallback (package:flutter/src/scheduler/binding.dart:1297:15)
#71     SchedulerBinding.handleDrawFrame (package:flutter/src/scheduler/binding.dart:1236:9)
#72     SchedulerBinding._handleDrawFrame (package:flutter/src/scheduler/binding.dart:1085:5)
#73     _invoke (dart:ui/hooks.dart:170:13)
#74     PlatformDispatcher._drawFrame (dart:ui/platform_dispatcher.dart:401:5)
#75     _drawFrame (dart:ui/hooks.dart:140:31)
════════════════════════════════════════════════════════════════════════════════════════════════════

Restarted application in 1,972ms.

i have two files of code :

main.dart:

import 'package:flutter/material.dart';
import 'package:flutter_tts/flutter_tts.dart';
import 'settings.dart';

void main() {
  runApp(MyApp());
}

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      theme: ThemeData(
        useMaterial3: false,
      ),
      debugShowCheckedModeBanner: false,
      home: MainSt(),
    );
  }
}

class MainSt extends StatefulWidget {
  const MainSt({Key? key}) : super(key: key);

  @override
  State<MainSt> createState() => _MainStState();
}

final addController = TextEditingController();
List cardsList = [];

class _MainStState extends State<MainSt> {
  var tts_delay = 1;
  var tts_word_repeat = 2;
  var tts_speach_rate = 0.5;

  FlutterTts flutterTts = FlutterTts();
  Future<void> textToS(String text) async {
    await flutterTts.setLanguage("en-US");
    await flutterTts.setVolume(0.5);
    await flutterTts.setSpeechRate(tts_speach_rate);
    await flutterTts.setPitch(1);
    await flutterTts.speak(text);
  }

  bool isPlaying = false;

  Future<void> playAllPhrases() async {
    isPlaying = true; // Set the flag to indicate playback is ongoing

    List<String> tempCardsList =
        List.from(cardsList); // Create a temporary list

    for (String phrase in tempCardsList) {
      if (!isPlaying) break; // Check the flag and break if needed
      for (int word = 0; word < tts_word_repeat; word++) {
        if (!isPlaying) break; // Check the flag and break if needed
        await textToS(phrase);
        await Future.delayed(Duration(seconds: tts_delay));
      }
    }
  }

  Future<void> _dialogBuilder(BuildContext context) {
    return showDialog<void>(
      context: context,
      builder: (BuildContext context) {
        return AlertDialog(
          title: const Text('Add a word or phrase'),
          content: TextField(
            controller: addController,
            decoration: const InputDecoration(
              border: UnderlineInputBorder(),
              labelText: 'Enter word or phrase',
            ),
          ),
          actions: <Widget>[
            TextButton(
              style: TextButton.styleFrom(
                textStyle: Theme.of(context).textTheme.labelLarge,
              ),
              child: const Text('Cancel'),
              onPressed: () {
                Navigator.of(context).pop();
                addController.clear();
              },
            ),
            TextButton(
              style: TextButton.styleFrom(
                textStyle: Theme.of(context).textTheme.labelLarge,
              ),
              child: const Text('Done'),
              onPressed: () {
                print(addController.text);
                setState(
                  () {
                    if (!(addController.text.trim().isEmpty)) {
                      cardsList.add(addController.text);
                      addController.clear();
                      Navigator.of(context).pop();
                    } else {
                      addController.clear();
                    }
                  },
                );
              },
            ),
          ],
        );
      },
    );
  }

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Row(
          mainAxisAlignment: MainAxisAlignment.spaceBetween,
          children: <Widget>[
            Text('Wordly'),
            IconButton(
              icon: Icon(Icons.settings),
              onPressed: () {
                setState(() {
                  Navigator.of(context).push(
                      MaterialPageRoute(builder: (context) => Settings_page()));
                });
              },
            ),
          ],
        ),
      ),
      floatingActionButton: Column(
        mainAxisAlignment: MainAxisAlignment.end,
        children: [
          FloatingActionButton(
            child: Icon(Icons.add),
            onPressed: () {
              _dialogBuilder(context);
            },
          ),
          SizedBox(
            height: 10,
          ),
          FloatingActionButton(
            child: Icon(Icons.volume_up_outlined),
            onPressed: () {
              playAllPhrases();
            },
          ),
          SizedBox(
            height: 10,
          ),
          FloatingActionButton(
            child: Icon(Icons.stop_circle),
            onPressed: () {
              setState(() {
                isPlaying = false;
              });
            },
          ),
        ],
      ),
      body: HomePage(),
    );
  }
}

class HomePage extends StatefulWidget {
  const HomePage({super.key});

  @override
  State<HomePage> createState() => _HomePageState();
}

class _HomePageState extends State<HomePage> {
  @override
  Widget build(BuildContext context) {
    return ListView.builder(
      itemCount: cardsList.length,
      itemBuilder: (context, index) {
        return Padding(
          padding: const EdgeInsets.symmetric(vertical: 2, horizontal: 5),
          child: Card(
            child: Column(
              mainAxisSize: MainAxisSize.min,
              children: [
                ListTile(
                  trailing: IconButton(
                    icon: Icon(Icons.delete),
                    onPressed: () {
                      setState(() {
                        //add card delete logic
                        cardsList.removeAt(index);
                      });
                    },
                  ),
                  title: Row(
                    children: [
                      // SizedBox(
                      //   width: 8,
                      // ),
                      Text(cardsList[index]),
                    ],
                  ),
                ),
              ],
            ),
          ),
        );
      },
    );
  }
}

and settings.dart :

import 'package:flutter/material.dart';
import 'main.dart';

class Settings_page extends StatefulWidget {
  const Settings_page({super.key});

  @override
  State<Settings_page> createState() => _Settings_pageState();
}

class _Settings_pageState extends State<Settings_page> {
  @override
  Widget build(BuildContext context) {
    return Scaffold(
      body: Center(
        child: Text("Hello"),
      ),
    );
  }
}

i tride the navigator method :

Navigator.of(context).push(MaterialPageRoute(builder: (context) => Settings_page()));

and i tride the navigator method without setstate but all lead to the same problem .

here is a video of the app :
Google Drive

i hope you finde a fix for it (:

Latest articles

spot_imgspot_img

Related articles

Leave a reply

Please enter your comment!
Please enter your name here

spot_imgspot_img