簡體   English   中英

Flutter - 我如何從嵌套的腳手架訪問抽屜

[英]Flutter - How do i access the Drawer from a nested Scaffold

此父底部導航欄

import 'package:flutter/material.dart';

class BottomNavigation extends StatefulWidget {
  BottomNavigation({
    Key? key,
  }) : super(key: key);
  @override
  _BottomNavigationState createState() => _BottomNavigationState();
}

class _BottomNavigationState extends State<OARBottomNavigation> {
  int _selectedIndex = 0;
  List<Widget> _widgetOptions = [
    Screen1(),
    Screen2(),
  ];

  void _onItemTapped(int index) {
    setState(() {
      _selectedIndex = index;
    });
  }

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      drawer: SideDrawer(),
      bottomNavigationBar: BottomNavigationBar(
        type: BottomNavigationBarType.fixed,
        items: const <BottomNavigationBarItem>[
          BottomNavigationBarItem(
            icon: Icon(Icons.assignment_turned_in),
            label: 'Screen 1',
          ),
          BottomNavigationBarItem(
            icon: Icon(Icons.people),
            label: 'Screen 2',
          ),
   
        ],
        currentIndex: _selectedIndex,
        onTap: _onItemTapped,
      ),
      body: Scaffold(
        body: _widgetOptions.elementAt(_selectedIndex),
      ),
    );
  }
}



現在在屏幕 1 上,我想打開 Drawer()。

import 'package:flutter/material.dart';

class Screen1 extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text('Screen 1 Title'),
      ),
      body: Container(
        child: Text('This is Screen 1'),
        ),
      ),
    );
  }
}


如何從屏幕 1 打開抽屜?

請檢查以下代碼。 BottomNavigationBarDrawer (BottomNavigationBar的頂部)

return Scaffold(
      appBar: AppBar(),
      drawer: Drawer(
        child: Container(
          color: Colors.red,
          child: ListView.builder(
            itemBuilder: (context, index) {
              return ListTile(
                title: InkWell(
                  onTap: () {},
                  child: Text(
                    index.toString(),
                  ),
                ),
              );
            },
            itemCount: 3,
          ),
        ),
      ),
      bottomNavigationBar: BottomNavigationBar(items: [
        BottomNavigationBarItem(icon: Icon(Icons.home), label: "Home"),
        BottomNavigationBarItem(icon: Icon(Icons.settings), label: "Settings"),
      ]),
    );

抽屜

打開抽屜

更好地使用:

Scaffold.of(context).openDrawer();

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM