JaxAdam
@JaxAdam
Junior Full-Stack Developer

Как заменить иконку Drawer в AppBar и заставить открываться Drawer по нажатию?

Добрый день всем! Вот виджет в котором я пытался поменять иконку:
class _HomePageState extends State<HomePage> {
  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        leading: IconButton(                  // Пытался тута
          icon: Icon(Icons.apps_sharp),
          onPressed: () => Scaffold.of(context).openDrawer();
        ),
        backgroundColor: Colors.white,
        iconTheme: IconThemeData(
          color: Colors.cyan[800], //change your color here
        ),
        title: Text(
          'AkepBersh',
          style: TextStyle(color: Colors.cyan[800], fontFamily: 'Lobster'),
        ),
        actions: [],
      ),
      drawer: Drawer(
        child: ListView(
          children: [
            UserAccountsDrawerHeader(
                accountName: Text('Name'),
                accountEmail: Text('example@gmail.com'))
          ],
        ),
      ),
    );
  }
}

Данный код дает ошибку при нажатии на leading от AppBar:
Scaffold.of() called with a context that does not contain a Scaffold.
  • Вопрос задан
  • 341 просмотр
Решения вопроса 1
@Neonoviiwolf
Flutter developer
class _HomePageState extends State<HomePage> {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      home: Scaffold(
        appBar: AppBar(
          leading: Builder(
            builder: (context) {
              return IconButton(
                icon: Icon(Icons.clear),
                onPressed: () => Scaffold.of(context).openDrawer(),
              );
            },
          ),
          backgroundColor: Colors.white,
          iconTheme: IconThemeData(
            color: Colors.cyan[800], //change your color here
          ),
          title: Text(
            'AkepBersh',
            style: TextStyle(color: Colors.cyan[800], fontFamily: 'Lobster'),
          ),
          actions: [],
        ),
        drawer: Drawer(
          child: ListView(
            children: [
              UserAccountsDrawerHeader(
                  accountName: Text('Name'),
                  accountEmail: Text('example@gmail.com'))
            ],
          ),
        ),
      ),
    );
  }
}
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы