我正在尝试创建一个页面上有一个日历,而另一页面上有一个待办事项列表的应用。
对于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)´