【发布时间】:2020-11-13 14:55:53
【问题描述】:
飞镖代码sliders_view.dart:
import 'package:flutter/material.dart';
import 'package:flutter/cupertino.dart';
import 'package:firebase_database/firebase_database.dart';
class Element {
Element(this.rawName);
final String rawName;
double _rating = 40;
// getters
double get rating => _rating;
// setters
set rating(double value) {
_rating = value;
print('Changed: ' + value.toString());
}
}
class SlidersView extends StatefulWidget {
@override
_SlidersViewState createState() => _SlidersViewState();
}
class _SlidersViewState extends State<SlidersView> {
final DatabaseReference dbRef = FirebaseDatabase.instance.reference();
@override
Widget build(BuildContext context) {
return Scaffold(
body: FutureBuilder<DataSnapshot>(
future: dbRef
.child('foo_bar')
.once(),
builder:
(BuildContext context, AsyncSnapshot<DataSnapshot> snapshot) {
if (snapshot.hasData) {
List<Element> elements = [];
for (var element in snapshot.data.value) {
elements.add(Element(element['name']));
}
return Column(children: [
for (Element element in elements)
CupertinoSlider(
value: element.rating,
activeColor: Colors.grey,
max: 100,
onChanged: (newRating) {
setState(() {
element.rating = newRating;
});
})
]);
}
}));
}
}
在我切换到 FutureBuilder 以使用 FireBase 之前,我有一个 Element 对象的硬编码列表,这工作正常,所以我确信它与未来的构建器有关。
输出(通过拖动滑块):
Reloaded 5 of 848 libraries in 150ms.
flutter: Changed: 40.37878787878788
flutter: Changed: 43.40909090909091
flutter: Changed: 45.3030303030303
flutter: Changed: 48.33333333333333
flutter: Changed: 50.22727272727272
flutter: Changed: 51.36363636363635
flutter: Changed: 52.49999999999999
视频:
【问题讨论】:
标签: firebase flutter firebase-realtime-database slider