Я пытаюсь создать приложение с календарем на одной странице и списком задач на другой странице.
Для 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)´