Как отобразить несколько виджетов в списке BottomNavigationBar? - PullRequest
0 голосов
/ 20 июня 2019

Я пытаюсь создать приложение с календарем на одной странице и списком задач на другой странице.

Для BottomNavigationBar я получил список виджетов. Одна отображается на первой странице (из BottomNavigationBar), а другая - на другой.

Теперь я хотел добавить список дел вместо виджета «Текст», но это не работает.

Я получил виджет _buildTodoList(), который отлично работает в теле моего эшафота, но не в моем списке виджетов.

Так почему же невозможно заменить Text('To Do List', style: ...) на _buildTodoList()?

(В текущем состоянии я должен решить, взять ли я список дел в моем теле или список виджетов с различным текстом для каждой страницы)

  Widget _buildTodoList() {
  return new ListView.builder(
    itemBuilder: (context, index) {
      if(index < _todoItems.length) {
        return _buildTodoItem(_todoItems[index], index);
      }
    },
  );
}
    static const List<Widget> _widgetOptions = <Widget>[
      Text(
        'Calendar',
        style: mytextStyle
      ),
      Text(
         'To Do List',
         style: mytextStyle,
      ),

    ];

    Widget build(BuildContext context) {
      return Scaffold(
        appBar: AppBar( backgroundColor: Colors.greenAccent,
          title: const Text('Kalendo'),
        ),
        body: _buildTodoList(), //or _widgetOptions.elementAt(_selectedIndex) for the text on each page
        floatingActionButton: new FloatingActionButton(
          onPressed: _pushAddTodoScreen, 
          tooltip: 'Add task',
          child: new Icon(Icons.add)
        ),
        bottomNavigationBar: BottomNavigationBar(
          items: const <BottomNavigationBarItem>[
            BottomNavigationBarItem(
              icon: Icon(Icons.calendar_today),
              title: Text('Calendar'),
            ),
            BottomNavigationBarItem(
              icon: Icon(Icons.list),
              title: Text('ToDo'),
            ),
          ],
          currentIndex: _selectedIndex,
          selectedItemColor: Colors.lightBlueAccent,
          onTap: _onItemTapped,
        ),
      );
    }

Полный проект: https://github.com/Cicada501/Kalendo

Если я пытаюсь добавить _buildTodoList() вместо текстового виджета, я получаю ошибку:

В initializers.dart могут быть доступны только статические члены (implicit_this_reference_in_initializer)

The values in a const list literal must be constants.
Try removing the keyword 'const' from the list literal.dart(non_constant_list_element)

Const variables must be initialized with a constant value.
Try changing the initializer to be a constant expression.dart(const_initialized_with_non_constant_value)´
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...