从屏幕上的链接导航时更改底部导航焦点

时间:2021-07-22 19:23:31

标签: flutter navigation bottomnavigationview

我的 Flutter 应用中有一个底部导航栏。当用户登录应用程序时,他们将被带到显示项目列表的主页。用户可以点击列表中的任何项目并进入详细信息页面。

当我点击链接进行导航时,底部导航栏不会更新以显示焦点已更改。

当我不使用底部导航栏导航时,如何更改此设置?

这是BottomNavigationBar的代码:

class _MainScreenState extends State<MainScreen> {
  int? _pageIndex = globals.targetScreen;

  List<Widget> pageList = <Widget>[
    AgentDashboardScreen(),
    TransactionDetailScreen(),
    AppointmentCalendarScreen(),
    AgentProfileScreen(),
  ];

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      body: pageList[_pageIndex!],
      resizeToAvoidBottomInset: true,
      bottomNavigationBar: BottomNavigationBar(
        backgroundColor: Colors.blueAccent,
        selectedIconTheme: IconThemeData(color: Colors.white),
        selectedItemColor: Colors.white,
        unselectedItemColor: Colors.black45,
        type: BottomNavigationBarType.fixed,
        currentIndex: _pageIndex!,
        onTap: (value) {
          setState(() {
            _pageIndex = value;
          });
        },
        items: [
          BottomNavigationBarItem(icon: Icon(Icons.home), label: "Home"),
          BottomNavigationBarItem(icon: Icon(Icons.add_business_outlined), label: "Add Tran"),
          BottomNavigationBarItem(icon: Icon(Icons.calendar_today), label: "Calendar"),
          BottomNavigationBarItem(icon: Icon(Icons.people), label: "Profile"),
         
        ],
      ),
    );
  }
}

这是主屏幕 AgentDashboardScreen 中的链接代码。它只是一个在 onTap: 属性中带有导航代码的 ListView。

body: SafeArea(
            child: Container(
              child: StreamBuilder(
                stream: FirestoreService().getAgencyTrxns(context),
                builder: (context, snapshot) {
                  if (!snapshot.hasData)
                    return Center(
                        child: const Text(
                          'Loading...',
                          style: TextStyle(
                              fontSize: 20, fontWeight: FontWeight.bold),
                        ));
                  return new ListView.builder(
                      itemCount: (snapshot.data! as QuerySnapshot).docs.length,
                      itemBuilder: (BuildContext context, int index) {
                        Trxns trxns = Trxns.fromFirestore(
                            (snapshot.data! as QuerySnapshot).docs[index]
                                .data() as Map<String, dynamic>);

                        return ListTile(
                          isThreeLine: true,
                          title: Text(
                            'Client: ${trxns.clientFName ?? 'n/a'} ${trxns
                                .clientLName ?? 'n/a'}',
                            style: TextStyle(
                                fontWeight: FontWeight.w900,
                                color: Colors.blueAccent),
                          ),                                      
                              ])),
                          
                          onTap: () {
                            Navigator.of(context).push(MaterialPageRoute(
                                builder: (context) =>
                                    TransactionDetailScreen(
                                        (snapshot.data! as QuerySnapshot).docs[index])));
                          },
                        );
                      });
                },
              ),

如果用户使用屏幕中的链接进行导航,是否可以更新BottomNavigationBar?

0 个答案:

没有答案