Как центрировать CircleAvatar на endDrawer?

#flutter #dart #flutter-layout

Вопрос:

Я хотел бы центрировать CircleAvatar(). Я попытался центрировать() и передать контейнер(), Заполнение() его родителю, чтобы это произошло. У вас есть какие-нибудь предложения?

 endDrawer: Drawer(
        child: ListView(
          padding: EdgeInsets.zero,
          children: [
            UserAccountsDrawerHeader(
              margin: EdgeInsets.only(bottom: 40.h),
              decoration: BoxDecoration(color: Colors.blue[100]),
              currentAccountPicture: CircleAvatar(
                  radius: 60.r,
                  backgroundColor: Colors.white,
                  child: Image.asset('assets/sermedhavuz.png')),
              accountName:
                  SizedBox(child: Text(user.userName.toUpperCase())),
              accountEmail: SizedBox(child: Text(user.email)),
            ),
          ],
        ),
      )
 

Вот фотография ящика:

Комментарии:

1. пожалуйста, добавьте UserAccountsDrawerHeader кодовую часть

2. Вы хотите, чтобы я добавил родителя ящика, потому что здесь находится UserAccountsDrawerHeader.

3. в этой части кода вы просто передаете параметр в UserAccountsDrawerHeader; на самом деле UserAccountsDrawerHeader вам нужен код части, в которой вы назначаете имя учетной записи , маржу и т. Д

Ответ №1:

Единственный способ сделать это (без создания пользовательского ящика) — установить размер currentAccountPicture с currentAccountPictureSize , а затем Center работает:

 double widthDrawer = MediaQuery.of(context).size.width * 0.75;
    return Container(
      width: widthDrawer,
      child: Drawer(
        child: ListView(
          padding: EdgeInsets.zero,
          children: [
            UserAccountsDrawerHeader(
              margin: EdgeInsets.only(bottom: 40.h),
              decoration: BoxDecoration(color: Colors.blue[100]),
              currentAccountPictureSize: Size(widthDrawer, 80), //set custom height
              currentAccountPicture: Center( //now Center works
                child: CircleAvatar(
                    radius: 60.r,
                    backgroundColor: Colors.white,
                    child: Image.asset('assets/sermedhavuz.png')),
              ),
              accountName:
              SizedBox(child: Text(user.userName.toUpperCase())),
              accountEmail: SizedBox(child: Text(user.email)),
            ),
          ],
        ),
      ),
    );
 

Чтобы узнать ширину ящика, установите контейнер в качестве родительского с пользовательской шириной.

Ответ №2:

Используйте container с alignment: Alignment.center

 endDrawer: Drawer(
        child: ListView(
          padding: EdgeInsets.zero,
          children: [
            UserAccountsDrawerHeader(
              margin: EdgeInsets.only(bottom: 40.h),
              decoration: BoxDecoration(color: Colors.blue[100]),
              currentAccountPicture: Container(
                 alignment: Alignment.center
                 child: CircleAvatar(
                  radius: 60.r,
                  backgroundColor: Colors.white,
                  child: Image.asset('assets/sermedhavuz.png'))
              ),
              accountName:
                  SizedBox(child: Text(user.userName.toUpperCase())),
              accountEmail: SizedBox(child: Text(user.email)),
            ),
          ],
        ),
      )
 

Комментарии:

1. Это не работает 🙁 Я пробовал это много раз. Кстати, спасибо