首页 > 解决方案 > 使用 Scaffold.of(context) 尝试使用 openDrawer() 时,位置参数过多错误,发现 2 而不是 0

问题描述

class MyApp extends StatelessWidget {
  @override

  Widget build(BuildContext context) {

   return MaterialApp(

        home: SafeArea(

            child: Scaffold(

      Builder(

          builder: (context) => AppBar(

                leading: IconButton(

                  icon: Icon(Icons.accessible),

                  onPressed: () => Scaffold.of(context).openDrawer(),

                ),
                title: Text('Sorted.'),
                backgroundColor: Color(0xff0A3D62),
              )),

      Drawer(

          child: ListView(padding: EdgeInsets.zero, children: <Widget>[

        new UserAccountsDrawerHeader(

          accountName: new Text('XYZ'),
          accountEmail: new Text('XYZ@gmail.com'),
          currentAccountPicture: new CircleAvatar(),
        )
      ])),

      body: Center(child: Home()),)

    ));
  }
}` 

错误:位置参数太多:预期为 0,但找到了 2 个。尝试删除额外的位置参数,或指定命名参数的名称。

请帮我解决这个问题。提前致谢!

标签: flutterdart

解决方案


这是因为你不能像这样传递AppBarDrawer参数Scaffold..

Scaffold(
    AppBar(),
    Drawer(),
)

..因为这些是命名参数。相反,您需要将它们与相应的参数名称一起传递,例如..

Scaffold(
    appBar: AppBar(),
    drawer: Drawer(),
)

推荐阅读