ящик флаттера Значок гамбургера не отображается, когда я случайно Направленность - PullRequest
0 голосов
/ 27 сентября 2019

Я пытаюсь сделать приложение RTL, и я хочу, чтобы ящик был справа.Мне удалось открыть его в правильном направлении, но значок меню гамбургера исчез.

Это код для создания макета rtl:

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return new MaterialApp(
      title: 'Flutter task',
      home: Directionality(
        textDirection: TextDirection.rtl,
          child: new MyHomePage()
      ),
    );
  }
}`

, а это мой ящик:

              drawer: new Container(
            constraints: new BoxConstraints.expand(
              width: MediaQuery
                  .of(context)
                  .size
                  .width - 60,
            ),
            color: Colors.black.withOpacity(0.6),
            alignment: Alignment.center,
              child: new ListView(
               children: <Widget>[
                 Text('1'),
                 Text('2')
               ],
              ),

          ),

Чего мне не хватает?

Ответы [ 3 ]

0 голосов
/ 27 сентября 2019

Если вы не хотите менять свой код.тогда вы можете сделать следующее:

    leading: IconButton(icon: Icon(Icons.arrow_back), onPressed: (){
      Navigator.of(context).pop();
    }),

Это, безусловно, поможет вам без изменения вашего кода и работы как следует.

0 голосов
/ 27 сентября 2019

Оберните свой домашний дочерний виджет с помощью Directionality, используя TextDirection.rtl

enter image description here

    import 'package:flutter/material.dart';

    class DrawerLayoutApp extends StatelessWidget {
    @override
    Widget build(BuildContext context) {
        return new MaterialApp(
            title: "My Apps",
            theme: new ThemeData(
                fontFamily: "Vazir",
                primaryColor: Color(0xff075e54),
                accentColor: Color(0xff25d366),
                primaryIconTheme: new IconThemeData(color: Colors.white)
            ),
            home: new Directionality(textDirection: TextDirection.rtl, child: new DrawerLayoutAppBody())
        );
    }
    }

    class DrawerLayoutAppBody extends StatefulWidget {
    @override
    State<StatefulWidget> createState() => new DrawerLayoutAppBodyState();
    }

    class DrawerLayoutAppBodyState extends State<DrawerLayoutAppBody>{
    TextStyle listTileTextStyle = new TextStyle(
        color: Colors.black,
        fontWeight: FontWeight.bold,
        fontSize: 18
    );

    @override
    Widget build(BuildContext context) {
        return new Scaffold(
        appBar: new AppBar(
            title: new Text("برنامه های من")
        ),
        drawer: new Drawer(
            child: new ListView(
            children: <Widget>[
                new Container(
                    height: 120,
                    child: new DrawerHeader(
                    padding: EdgeInsets.zero,
                    child: new Container(
                        decoration: new BoxDecoration(
                            gradient: new LinearGradient(
                                colors: <Color>[
                                Theme.of(context).primaryColor,
                                const Color(0xff05433c),
                                ],
                                begin: Alignment.topCenter,
                                end:  Alignment.bottomCenter
                            )
                        ),

                    )
                    )
                ),
                new ListTile(
                leading: new Icon(Icons.map, color: Colors.black),
                title: new Text(
                    'گوگل مپ',
                    style: listTileTextStyle
                ),
                onTap: (){

                },
                ),

            ]
            )
        ),
        );
    }
    }
0 голосов
/ 27 сентября 2019

Выход:

enter image description here


Полный код:

import 'package:flutter/material.dart';

void main() {
  runApp(
    MaterialApp(
      home: Directionality(
        child: MyPage(),
        textDirection: TextDirection.rtl, // setting rtl
      ),
    ),
  );
}

class MyPage extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(),
      drawer: Drawer(), // your drawer
    );
  }
}
...