Этот проект можно найти здесь: https://github.com/Santos-Enoque/flutter_blog_app
До сих пор я подключен к базе данных реального времени firebase и работает хорошо. Я пытаюсь добавить кнопку «Мне нравится» на домашнюю страницу (lib /screen / home.dart), где перечислены все сообщения.
На домашней странице отображаются результаты блога с использованием карты с ListTile. Конечное свойство карты ListTile уже используется, поэтому я хотел бы использовать ведущее свойство карты ListTile для отображения избранного значка, который будет увеличивать счетчик ++ при нажатии, а также сохранять результаты в Firebase. Прямо как кнопка «Мне нравится» в Facebook. Вот код ниже:
child: Card(
child: ListTile(
title: ListTile(
onTap: (){
_incrementCounter();
},
leading: FittedBox(
fit: BoxFit.fitWidth,
child: Row(
children: <Widget>[
Icon(Icons.favorite),
Text(postsList[index].counter.toString()
),
],
),
),
title: Text(
postsList[index].title,
style: TextStyle(
fontSize: 16.0, fontWeight: FontWeight.bold),
),
trailing: Text(
timeago.format(DateTime.fromMillisecondsSinceEpoch(postsList[index].date)),
style: TextStyle(fontSize: 12.0, color: Colors.grey),
),
),
subtitle: Padding(
padding: const EdgeInsets.only(bottom: 14.0),
child: Text(postsList[index].body, style: TextStyle(fontSize: 14.0),),
),
),
),
Вот код счетчика _increment:
try {
var ref = FirebaseDatabase.instance.reference().child('posts/{postId}/counter');
await ref.once().then((data) async => {
await ref.set(data.value + 1),
});
} catch (e) {
print(e.message);
}
}
! [Домашняя страница блога] https://photos.google.com/share/AF1QipMK6C-Wx2vZHHbE2jDMQsfYNnwl9OWK_5W8OKOfiIChcXt-gnWnCH7ba_EpyRnRAA?key=cGxkRkVSSk9PQTdtTXB0MzZBRDNHNUVzSGxlcDVB
Сообщения в блоге отображаются в виде карточек, как на картинке ... Я пытаюсь добавить значок с левой стороны карточки (начальный) плюс увеличивающееся значение каждый раз, когда кто-то нажимает на значок. Что-то вроде кнопки «Нравится» на Facebook. А также сохраните данные в базе данных реального времени Firebase.
Любая помощь очень ценится ... Спасибо всем!