【问题标题】:Passing values from a Slider widget into firestore database将 Slider 小部件中的值传递到 firestore 数据库
【发布时间】: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')),
      ],
    );
  }
}

【问题讨论】:

    标签: flutter google-cloud-firestore flutter-widget


    【解决方案1】:

    您可以在滑块的onChangedEnd() 方法中调用firestore 函数。因此,当滑块的值更改结束时,它将在 Firestore 中设置该值。 在 firestore 函数中传递滑块的值以正确设置 DB 中的值。

    【讨论】:

    • @ChineduNwabuisi 如果以上答案对您有帮助,请告诉我们?
    • 这是answer your question吗?请考虑接受答案,使其对社区成员更加可见。
    猜你喜欢
    • 1970-01-01
    • 2021-10-12
    • 1970-01-01
    • 1970-01-01
    • 2020-02-22
    • 2018-09-24
    • 1970-01-01
    • 2020-08-10
    • 2021-04-23
    相关资源
    最近更新 更多