SlideDrawer , метод toggle() был вызван при нуле?

#flutter

Вопрос:

Я использую SlideDrawer() в flutter , но при вызове этого я получаю ошибку , метод Toggle() или open() был вызван с нулевым значением ..

код, в котором я вызываю , использует SlideDrawer() в flutter , но при вызове этого я получаю ошибку, метод Toggle() или open() был вызван с нулевым значением ..

код, откуда я звоню

   @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text("Irr Alert"),
        backgroundColor: Colors.orange,
        leading: IconButton(
          icon: Icon(Icons.menu),
          onPressed: () => SlideDrawer.of(context).toggle(),
        ),
      ),
      body: Container(
        height: MediaQuery.of(context).size.height,
        child: Center(
          child: SingleChildScrollView(
            child: Column(
              crossAxisAlignment: CrossAxisAlignment.center,
              mainAxisAlignment: MainAxisAlignment.center,
              children: [
                GestureDetector(
                  onTap: () {
                    Navigator.push(context, MaterialPageRoute(builder: (context) => AddDevice()));
                  },
                  child: Column(
                    children: [
                      Container(
                        child: Image.network(
                          addDevice,
                          height: 150,
                          width: 150,
                        ),
                      ),
                      SizedBox(
                        height: 10,
                      ),
                      Text(
                        "Add Device",
                        style: TextStyle(fontSize: 25),
                      ),
                    ],
                  ),
                ),
                SizedBox(
                  height: 20,
                ),
                GestureDetector(
                  onTap: () {
                    Navigator.push(context, MaterialPageRoute(builder: (context) => ShowDevices()));
                  },
                  child: Column(
                    children: [
                      Image.network(
                        showDevice,
                        height: 150,
                        width: 150,
                      ),
                      SizedBox(
                        height: 10,
                      ),
                      Text(
                        "Show Device",
                        style: TextStyle(fontSize: 25),
                      ),
                    ],
                  ),
                ),
                SizedBox(
                  height: 20,
                ),
                GestureDetector(
                  onTap: () {
                    Navigator.push(context, MaterialPageRoute(builder: (context) => CropDetails()));
                  },
                  child: ClipRRect(
                    borderRadius: BorderRadius.circular(70),
                    child: Image.network(
                      cropSeeds,
                      height: 150,
                      width: 150,
                      fit: BoxFit.cover,
                    ),
                  ),
                ),
                SizedBox(
                  height: 10,
                ),
                Text(
                  "Crop Details",
                  style: TextStyle(fontSize: 25),
                ),
                SizedBox(
                  height: 10,
                ),
              ],
            ),
          ),
        ),
      ),
    );
  }
 

Ответ №1:

Вам нужно передать ключ от эшафота для выдвижного ящика, а также назначить его вашему основному эшафоту

           final GlobalKey<ScaffoldState> scaffoldKey = new GlobalKey<ScaffoldState>();
    
    @override
      Widget build(BuildContext context) {
    
        return Scaffold(
          key: scaffoldKey
          drawer: Drawer(
            key: scaffoldKey,
),
          body: Container(
          
          ),
        );
      }