Change the name route when user click widget - flutter web

Viewed 188

I am declaring routes inside main.dart like this:

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
        debugShowCheckedModeBanner: false,
        theme: ThemeData(
          primarySwatch: Colors.blue,
        ),
        initialRoute: '/',
        routes: {
          '/': (context) => HomeScreen(isLogin: false),
          '/home': (context) => Home(),
          '/pageok': (context) => AnotherPage()
        });
  }
}

and I have custom side bar that I need to access in all pages that I have. Here is the way I define the side bar

@override
  Widget build(BuildContext context) {
    print(MediaQuery.of(context).size.width);
    return Scaffold(
        appBar: AppBarCustom(),
        body: Stack(
          children: <Widget>[
            ValueListenableBuilder(
                valueListenable: indexPage,
                builder: (_, val, __) {
                  if (indexPage.value == 0)
                    return BerandaPelamar();
                  else if (indexPage.value == 1)
                    // Navigator.pushNamed(context, "/pageok"); ..... *****
                    return AnotherPage();
                  else
                    return Container(
                      color: Colors.red,
                    );
                }),

//here is my custom side bar
            ValueListenableBuilder(
                valueListenable: indexPage,
                builder: (_, val, __) {
                  return NavBarCustom(indexPage: indexPage);
                })
          ],
        ));
  }

So from ***** in my code I would like to return a Navigator that navigate user to a screen but I don't able to do that since I have to return a widget inside ValueListenableBuilder. Is there a way to do that or is there a way.. so that when user is in AnotherPage screen the route become http://localhost:59849/#/pageok

0 Answers
Related