Flutter 颤振:如何模块化底部导航栏

Flutter 颤振:如何模块化底部导航栏,flutter,oop,dart,state,Flutter,Oop,Dart,State,我一直在浏览关于底部导航栏的多个教程。每个教程都会将底部导航栏放在主颤振文件中,我不喜欢这样。我试图将应用程序模块化,并将底部导航栏放在第二个文件中,其中包含getter和setter,以更改和监视当前视图,但这对我不起作用。我已尝试在应用程序文件中创建setter和getter,以供导航栏访问,以处理如下导航: class _AppState extends State<App> { int _selectedPage = 0; final _pages = [HomePa

我一直在浏览关于底部导航栏的多个教程。每个教程都会将底部导航栏放在主颤振文件中,我不喜欢这样。我试图将应用程序模块化,并将底部导航栏放在第二个文件中,其中包含getter和setter,以更改和监视当前视图,但这对我不起作用。我已尝试在应用程序文件中创建setter和getter,以供导航栏访问,以处理如下导航:

class _AppState extends State<App> {
  int _selectedPage = 0;
  final _pages = [HomePage(), EventsPage(), ThrivePage(), AnnouncementsPage()];

  int get currentPage => this._selectedPage;

  set currentPage(int thePage) {
    this._selectedPage = thePage;
  }
class\u AppState扩展状态{
int _selectedPage=0;
最终页面=[HomePage()、EventsPage()、ThrivePage()、AnnouncementsPage()];
int get currentPage=>这个;
设置当前页面(页面内部){
此页面。\ u selectedPage=页面;
}
底部的导航小部件文件可以访问它,但是App类没有实际变量,所以我无法访问类getter和setter


我对OOP非常陌生,因此可能有一种方法我不熟悉。非常感谢您的帮助。

这可能不是您现在想要听到的内容,但您可以创建一个自定义选项卡并使用页面视图作为视图,然后使用页面视图控制器在屏幕之间进行更改。现在,自定义导航可以是任何文件,您只需将它们链接起来即可直截了当地。
我想我可能会写一篇文章来真正解释我所说的

这可能不是你现在想要听到的,但是你可以创建一个自定义选项卡,使用页面视图作为你的视图,然后使用页面视图控制器在屏幕之间切换。现在自定义导航可以是任何文件,你只需正确链接它们。
我想我可能会写一篇文章来真正解释我所说的

你可以使用
ValueNotifier
在不同的小部件之间传递值。让你的底部导航类在构造函数中使用ValueNotifier并向其添加一个侦听器

class MyBottomNavigationBar extends StatefulWidget {
  final ValueNotifier<int> currentPageNotifier;


  MyBottomNavigationBar(this.currentPageNotifier);

  @override
  _MyBottomNavigationBarState createState() => _MyBottomNavigationBarState();
}

class _MyBottomNavigationBarState extends State<MyBottomNavigationBar> {

  @override
  void initState() {
    super.initState();
    widget.currentPageNotifier.addListener(() {
      print(widget.currentPageNotifier.value);
    });
  }

  @override
  Widget build(BuildContext context) {
    return Container();
  }
}

您可以使用
ValueNotifier
在不同的小部件之间传递值。使您的底部导航类在构造函数中接受ValueNotifier并向其添加侦听器

class MyBottomNavigationBar extends StatefulWidget {
  final ValueNotifier<int> currentPageNotifier;


  MyBottomNavigationBar(this.currentPageNotifier);

  @override
  _MyBottomNavigationBarState createState() => _MyBottomNavigationBarState();
}

class _MyBottomNavigationBarState extends State<MyBottomNavigationBar> {

  @override
  void initState() {
    super.initState();
    widget.currentPageNotifier.addListener(() {
      print(widget.currentPageNotifier.value);
    });
  }

  @override
  Widget build(BuildContext context) {
    return Container();
  }
}

你想要什么样的布局?正确地解释。我想要一个在应用程序中有底部导航栏的布局。当我按下图标时,应用程序页面会改变,底部导航栏会改变以突出显示你在特定视图上。你想要什么样的布局?正确地解释。我想要一个有底部导航栏的布局应用程序中的离子栏。当我按下图标时,应用程序页面会更改,底部导航栏会更改以突出显示您在特定视图上。我尝试了此操作,但它解决了一半问题。我还尝试将底部导航栏的索引发送回_AppState类,以便在按下底部导航时实际页面会更改bar iconI认为您也可以使用相同的changenotifier发送底部导航条的索引,并从_AppState侦听。我尝试了这个方法,但它解决了一半的问题。我还尝试将底部导航条的索引发送回_AppState类,因此当我按下底部导航条iconI时,实际页面会发生更改,我认为您可以A还可以使用相同的changenotifier发送底部导航器的索引,并从_AppState.Please do.收听一篇文章就好了!;)Please do.一篇文章就好了!)