#firebase #dart #firebase-realtime-database
#firebase #dart #firebase-база данных в реальном времени
Вопрос:
Я использую firebase realtime DB и хотел бы получать данные на основе CategoryID.
Вот структура БД.
Вот код:
Future<void> fetchAndSetProducts(String id) async {
const url = 'https://random-9006.firebaseio.com/products.json';
try {
final response = await http.get(url);
final extractedData = json.decode(response.body) as Map<String, dynamic>;
print(extractedData.toString());
}
Как создать URL-адрес, чтобы получить продукты в соответствии с переданным идентификатором CategoryID?
Комментарии:
1. почему вы не используете плагины firebase?
2. Просто учусь @PeterHaddad
3. Я понимаю, но вам было бы проще извлекать и обрабатывать данные в firebase, если вы используете следующие плагины github.com/FirebaseExtended/flutterfire
Ответ №1:
Вы можете использовать следующий плагин для извлечения данных из firebase:
Внутри pubspec.yaml
:
dependencies:
firebase_database: ^4.1.1
firebase_core: ^0.5.0 1
в main()
функции инициализируйте Firebase:
void main() async {
WidgetsFlutterBinding.ensureInitialized();
await Firebase.initializeApp();
runApp(MyApp());
}
Затем вы можете получить данные, используя следующий способ:
Future<DataSnapshot> getData(String category){
var dbRef = FirebaseDatabase.instance.reference().child("products");
return await dbRef.orderByChild("categoryId").equalTo(category).once();
}
Затем вы можете вызвать этот future
метод внутри a FutureBuilder
. Для FutureBuilder
проверки:
https://flutter.dev/docs/cookbook/networking/fetch-data#5-display-the-data
https://api.flutter.dev/flutter/widgets/FutureBuilder-class.html
Комментарии:
1. оцените подробное объяснение. Не могли бы вы также рассказать мне, как выполнить выборку по URL?
Ответ №2:
Я понял это.
Вы задаете тип данных final
URL, и URL становится:
final url = 'https://mydburl.firebaseio.com/products.json?orderBy="categoryId"amp;equalTo="$id"';