如何在BottomNavigationBar列表中显示多个小部件?

时间:2019-06-19 23:41:06

标签: flutter dart bottomnavigationview

我正在尝试创建一个页面上有一个日历,而另一页面上有一个待办事项列表的应用。

对于BottomNavigationBar,我得到了一个小部件列表。一个显示在BottomNavigationBar的第一页上,另一个显示在另一页上。

现在,我想添加“待办事项列表”而不是“文本”小组件,但这不起作用。

我得到了窗口小部件_buildTodoList(),该窗口小部件可以在我的脚手架中正常工作,但不能在我的窗口小部件列表中正常工作。

那么为什么不能将Text('To Do List', style: ...)替换为_buildTodoList()

(在当前状态下,我必须决定是将ToDo列表放在我的体内,还是将Widget列表放在每页的文本不同的地方)

  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)´

0 个答案:

没有答案