У меня есть список имен событий в таком виджете с отслеживанием состояния
main.dart
class Fav extends StatefulWidget {
@override
_FavState createState() => _FavState();
}
class _FavState extends State<Fav> {
final PageController ctrl = PageController(viewportFraction: 0.8);
final Firestore db = Firestore.instance;
Stream slides;
var fav = ['3-Tech Event'];
.
.
.
И на другой странице я хочу добавить строку, скажем,
'5-Art Exhibit'
в
var fav = ['3-Tech Event'];
, чтобы получить окончательный результат
fav = ['3-Tech Event', '5-Art Exhibit'];
на странице выше. Как я могу это сделать? Вот мой код для кнопки
Event.dart
class Star extends StatefulWidget {
@override
_StarState createState() => _StarState();
}
class _StarState extends State<Star> {
Color _iconColor = Colors.grey;
@override
Widget build(BuildContext context) {
return Container(
padding: EdgeInsets.all(55.0),
child: Transform.scale(
scale: 2.0,
child: IconButton(
icon: Icon(
Icons.star,
color: _iconColor,
),
onPressed: () {
setState(() {
_iconColor = (_iconColor == Colors.yellow) ? Colors.grey : Colors.yellow;
});
})
),
);
}
}
Заранее спасибо!
ОБНОВЛЕНИЕ
Я последовал совету @Viren V Varasadiya и обновил свой код к этому
main.dart
class Fav extends StatefulWidget {
@override
_FavState createState() => _FavState();
}
class _FavState extends State<Fav> {
var fav = ['3-Tech Event'];
updatedata(String item) {
setState(() {
fav.add(item);
});
}
А из другого файла я удалил класс Star (потому что он в любом случае предназначен для использования в другом классе), и он выглядел так
class Event extends StatefulWidget {
final eventInfo;
Event({Key key, List eventInfo}) //I have to pass a list of data to this
: this.eventInfo = eventInfo, //page from another class
super(key: key);
final Function updatedata;
Event.addToFavWith({this.updatedata});
@override
_EventState createState() => _EventState();
}
class _EventState extends State<Event> {
Color _iconColor = Colors.grey;
@override
Widget build(BuildContext context) {
.
.
.
Container( //This used to be Container(child:Star())
child: InkWell(
child: Container(
padding: EdgeInsets.all(55.0),
child: Transform.scale(
scale: 2.0,
child: IconButton(
icon: Icon(
Icons.star,
color: _iconColor,
),
onPressed: () {
setState(() {
_iconColor = (_iconColor == Colors.yellow)
? Colors.grey
: Colors.yellow;
widget.updatedata(name);
});
})),
),
)),
И теперь я получите пару ошибок.
Все конечные переменные должны быть инициализированы, а 'eventInfo' - нет. Попробуйте добавить инициализатор для поля.
Все конечные переменные должны быть инициализированы, а «обновленные данные» - нет. Попробуйте добавить инициализатор для поля.