Вопрос:

Flutter bottomNavigationBar (изменить только раздел тела)

flutter flutter-layout

13 просмотра

1 ответ

2656 Репутация автора

Итак, у меня работает следующий bottomNavigationBar, однако он не достаточно чист для меня, и я надеюсь, что есть лучший способ, который кто-то знает.

В основном я хочу изменить только раздел тела, а не всю страницу.

Однако я хочу, чтобы каждый раздел в разных классах был аккуратным (в идеале - новые файлы .dart, поскольку все они будут иметь разные функции).

В настоящее время вся информация о странице находится внутри тега body

 body: PageView(
      controller: _myPage,
      onPageChanged: (int) {
        print('Page Changes to index $int');
      },
      children: <Widget>[
        Center(
          child: Container(
            child: Text('Empty Body 0'),
          ),
        ),
        Center(
          child: Column(
            mainAxisAlignment: MainAxisAlignment.spaceEvenly,
            children: [
              Text('images/pic1.jpg'),
              Text('images/pic2.jpg'),
              Text('images/pic3.jpg'),
            ],
          ),
        ),
        Center(
          child: Container(
            child: Text('Empty Body 2'),
          ),
        ),
        Center(
          child: Container(
            child: Text('DRN1 app is made using Google Flutter. While every attempt was made to make sure that this app works on as many devices as possible. We are unable to test every device. If you have issues running this app please let us know'),
          ),
        )
      ],
      physics: NeverScrollableScrollPhysics(), // Comment this if you need to use Swipe.
    ),

то, что я хотел бы, что-то вроде этого.

body: PageView(
      controller: _myPage,
      onPageChanged: (int) {
        print('Page Changes to index $int');
      },
      children: <Widget>[
       home(),
news() , // this is the main body for home
shows(), // this one shows the class shows() which fetches JSON and returns a different body layout
about(), // about text
  ]

Кто-нибудь знает лучший способ сделать это?

Автор: RussellHarrower Источник Размещён: 11.08.2019 04:24

Ответы (1)


0 плюса

63 Репутация автора

Что вы можете сделать, это создать отдельные файлы Dart и импортировать их в свой main.dart

Затем внутри вашего класса State определите список, который содержит страницы, которые вы хотите показать

List<Widget> _myPage = <Widget>[Page1class(),Page2class(),Page3class()];
После этого вы можете использовать приведенный ниже код, который выглядит довольно чисто. Использование builder()метода позволит вам создавать страницы на основе размера _myPage ,
return MaterialApp( title: 'Flutter Demo', home: Scaffold( appBar: AppBar(title: Text('sdf')), body: PageView.builder( itemBuilder: (context, position) => _myPage[position], itemCount: _myPage.length, ), ) );

Автор: Mahi Размещён: 11.08.2019 06:57
Вопросы из категории :
32x32