AppBar можно использовать повторно на разных страницах и перенаправлять на разные страницы.

Я не могу решить две проблемы с моей многоразовой панелью приложений.

  1. Панель приложений имеет разную ширину страницы. Панель приложений короче ширины страницы
  2. Текст и значки не отцентрированы по вертикали. Похоже, у панели приложений была граница! (если я перемещаю выравнивание, я могу засеять границу. См. рисунок 2. см. белый значок справа < / а>
  3. Когда я открываю страницу, мне кажется, что панель приложений находится под многоразовой панелью приложений. См. Рисунок 3. Панель приложений под многоразовой панелью приложений

На каждой странице я использую этот код для вызова панели приложений:

Widget build(BuildContext context) {
    return Scaffold(
      //backgroundColor: Colors.white,
       appBar: AppBar(
         title: ReusableBar(),
      ),

Это код многоразового AppBar:

class ReusableBar extends StatelessWidget implements PreferredSizeWidget{
  @override
  Widget build(BuildContext context) {
    //number = number + displayedText;
    return AppBar(
      //elevation: 0.0,
      centerTitle: true,
      automaticallyImplyLeading: false,
      titleSpacing: 0.0,
      title: Text(getTranslated(context, 'total_click:') + "$_appbarcounter"),
      actions: <Widget>[
        IconButton(
          alignment: Alignment(0.0, -4.0),
          icon: Icon(
            Icons.save,
            color: Colors.white,
          ),
          onPressed: () {
            // do something
            //TODO AGGIUNGERE FUNZIONE AL PULSANTE SAVE CON PAGINA DI SALVATAGGIO
          },
        )
      ],
      // leading: GestureDetector(
      //   onTap: () { /* Write listener code here */ },
      //   child: Icon(
      //     Icons.menu,  // add custom icons also
      //   ),
      // ),
    );
  }

person Cassergio    schedule 04.01.2021    source источник
comment
Решено частично изменением кода страницы. return Scaffold (// backgroundColor: Colors.white, appBar: ReusableBar (),   -  person Cassergio    schedule 04.01.2021


Ответы (1)


Если вы поместите свой ReusableBar в свойство title объекта AppBar, он будет помещать панель приложений внутрь другой. Как вы упомянули в своем комментарии, вы должны реализовать свою настраиваемую панель приложений следующим образом:

@override
Widget build(BuildContext context) {
   return Scaffold(
      appBar: ReusableBar(),
   );
}

Поступая таким образом, вы объявляете только одну панель приложений, которая должна решить вашу проблему.

person Guillaume Roux    schedule 05.01.2021