将 Slider 小部件中的值传递到 firestore 数据库
Posted
技术标签:
【中文标题】将 Slider 小部件中的值传递到 firestore 数据库【英文标题】:Passing values from a Slider widget into firestore database 【发布时间】:2021-11-22 08:47:40 【问题描述】:我想知道我可以使用哪些方法将值从滑块小部件传递到链接到 Firestore 数据库的函数中。我有一个设置为零的值列表,目标是在更改滑块的值时更改值。这是函数的sn-p:
import 'package:cloud_firestore/cloud_firestore.dart';
import 'package:flutter/material.dart';
import 'package:wequilschool_app/screens/blend_&_mix/item.dart';
class SaveIngredientsProvider
/// Firestore database reference to the BlendandMix collection
final CollectionReference blendAndMixDatabase =
FirebaseFirestore.instance.collection("BlendandMix");
/// Stores the item's objects
List<Item> item = [];
Future<void> updateIngredientCount()
// ignore: avoid_dynamic_calls
return blendAndMixDatabase
.doc('H2IbznvLGKYRvCLJSomk')
.set(
'ingredients':
'almond_butter': 0,
'bananas': 0,
'blackberries': 0,
'blueberries': 0,
'chia_seeds': 0,
'chocolate_protein_powder': 0,
'flax_seeds': 0,
'greek_yogurt': 0,
'ice_cubes': 0,
'mango_chunks': 0,
'mint': 0,
'pineapple_chunks': 0,
'raspberries': 0,
'strawberries': 0,
'vanilla_protein_powder': 0
,
, SetOptions(merge: true))
.then((value) => print("Ingrdient(s) Number Updated"))
.catchError(
(error) => print("Failed to update ingredient count: $error"));
这是另一个带有 Slider 小部件的 sn-p:
import 'package:flutter/material.dart';
import 'package:wequilschool_app/screens/blend_&_mix/services/save_ingredients_provider.dart';
/// Smoothie ingredient item
class Item extends StatefulWidget
final String image;
final String name;
double saveValue = 0.0;
double? defaultSaveValue = 0.0;
/// Each item needs an image and name, so it is required
Item(
Key? key,
required this.image,
required this.name,
this.defaultSaveValue,
) : super(key: key);
@override
_ItemState createState() => _ItemState();
class _ItemState extends State<Item>
@override
Widget build(BuildContext context)
return Row(
mainAxisAlignment: MainAxisAlignment.start,
children: [
Image.asset(
widget.image,
width: 70,
fit: BoxFit.contain,
),
Expanded(
child: Text("$widget.name", textAlign: TextAlign.center),
),
Expanded(
child: Slider(
value: widget.defaultSaveValue ?? widget.saveValue,
min: 0,
max: 5,
divisions: 5,
label: widget.saveValue.toString(),
onChanged: (double newValue)
setState(()
widget.defaultSaveValue = newValue;
widget.saveValue = newValue;
);
,
)),
ElevatedButton(
onPressed: ()
SaveIngredientsProvider().updateIngredientCount();
,
child: const Text('Save Ingredients')),
],
);
【问题讨论】:
【参考方案1】:您可以在滑块的onChangedEnd()
方法中调用firestore 函数。因此,当滑块的值更改结束时,它将在 Firestore 中设置该值。
在 firestore 函数中传递滑块的值以正确设置 DB 中的值。
【讨论】:
@ChineduNwabuisi 如果以上答案对您有帮助,请告诉我们? 这是answer your question吗?请考虑接受答案,使其对社区成员更加可见。以上是关于将 Slider 小部件中的值传递到 firestore 数据库的主要内容,如果未能解决你的问题,请参考以下文章
单击时如何将按钮值从自定义小部件传递到 tkinter 中的主应用程序
如何从模型实例(具有来自 api 的值)传递数据并将其提供给 Text() 小部件