Flutter:Firestoreに保存

Zeusox

私はと呼ばれる方法で持っている_sendToDatabaseWithArgsいくつかの引数を取り、firestoreデータベースに保存ONTAP。引数は、フォームがあり、3つの入力を受け取る最初の画面からすでに入力されています。

問題は、onTapアクションを実行すると、データがfirestoreに保存されないことです。しかし、プログラムを保存すると、データは自動的にデータベースに保存されます!!!!

これを処理することになっているクラスは次のとおりです。

import 'package:cloud_firestore/cloud_firestore.dart';
import 'package:flutter/material.dart';

import 'StoreData.dart';

class FeedBack extends StatelessWidget {
  final StoreData storeData;
  String feedBackHolder = "";

  FeedBack({Key key, @required this.storeData}) : super(key: key);

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text("Navajo Inc Feedback"),
      ),
      body: new Container(
        padding: new EdgeInsets.all(15.0),
        child: new ListView(
          // crossAxisAlignment: CrossAxisAlignment.stretch,

          children: <Widget>[

            new RaisedButton(onPressed: _sendToDatabaseWithArgs(storeData.storeNumber, storeData.repName, storeData.repCell, storeData.transactionDate),

            child: const Text('RAISED BUTTON'),


            ),

            new GestureDetector(

              onTap: _sendToDatabaseWithArgs(storeData.storeNumber, storeData.repName, storeData.repCell, storeData.transactionDate),

              child: feedBackCardsImage(
                imagePath: 'assets/happy_face.png',
                CardTitle: 'Happy Customer',
                CardTag: 'Experience was excellent',

              ),
            ),

            new GestureDetector(
              onTap: _sendToDatabase,
              child: feedBackCardsImage(
                imagePath: 'assets/neutral_face.png',
                CardTitle: 'Neutral Customer',
                CardTag: 'Experience was satisfactory',
              ),
            ),
            new GestureDetector(
              onTap: _sendToDatabase,
              child: feedBackCardsImage(
                imagePath: 'assets/angry_face.png',
                CardTitle: 'Unsatisfied Customer',
                CardTag: 'Experience was unsatisfactory',
              ),
            ),
          ],
        ),
      ),
    );
  }



  _sendToDatabaseWithArgs(String storeNumber,repName,repCell, DateTime transactionDate) {




      Firestore.instance.runTransaction((Transaction transaction) async {
        CollectionReference reference = Firestore.instance.collection('Stores');

        await reference.add({
          "store Name": storeNumber,
          "Rep Name": repName,
          "Rep Cell": repCell,
          "Transaction Date": transactionDate,
        });
      });


  }






  _sendToDatabase() {

    Firestore.instance.runTransaction((Transaction transaction) async {
      CollectionReference reference = Firestore.instance.collection('Stores');

      await reference.add({
        "store Name": "${storeData.storeNumber}",
        "Rep Name": "${storeData.repName}",
        "Rep Cell": "${storeData.repCell}",
        "Transaction Date":"${storeData.transactionDate}",
      });
    });
  }


}







// feedback cardsImage widget / class

class feedBackCardsImage extends StatelessWidget {



  final String imagePath;
  final String CardTitle;
  final String CardTag;

  feedBackCardsImage({
    this.imagePath,
    this.CardTitle,
    this.CardTag,
  });

  @override
  Widget build(BuildContext context) {
    return new Container(
        child: new Card(
          child: new Padding(
            padding: new EdgeInsets.all(15.0),
            child: new Column(
              children: <Widget>[
                new SizedBox(
                  height: 184.0,
                  child: new Stack(
                    children: <Widget>[
                      new Positioned.fill(
                        child: new Image.asset(
                          imagePath,
                          //package: destination.assetPackage,
                          fit: BoxFit.contain,
                        ),
                      ),
                    ],
                  ),
                ),
                new Padding(padding: new EdgeInsets.all(7.0,),
                  child:  new Text(CardTitle, style: new TextStyle(fontSize: 14.0, fontWeight: FontWeight.w600, color: Colors.black87), ),
                ),
                new Padding(padding: new EdgeInsets.all(0.0,),
                  child:  new Text(CardTag, style: new TextStyle(fontSize: 12.0, fontWeight: FontWeight.w400, color: Colors.black54), ),
                ),
              ],
            ),
          ),
        ),




    );
  }
}

どんな洞察もいただければ幸いです!

出現した

あなたの問題は、Flutterが_sendToDatabaseWithArgsonTapが呼び出されたときにメソッドを呼び出すのではなく、onTapを呼び出した結果を割り当てていることだと思いますそのため_sendToDatabaseWithArgs、アプリが保存/ホットリロードされたときに実行されます。ウィジェットをロードするときにメソッドを呼び出しています。

これを修正するには、onTapsを次のように変更します。

onTap: () => _sendToDatabaseWithArgs(...)

このように、Flutterは、メソッドを呼び出してウィジェットがタップされたときに呼び出される呼び出し可能なオブジェクトを返すことを期待するのではなく、正しい引数を使用してメソッドを呼び出すラムダを呼び出すことを認識しています。

これは、の引数に引数がある場合に発生することに注意しonTapてください。onTap: _sendToDatabaseFlutterに、評価する式ではなく、保持するための参照を与えているので、これが他の場所で問題になるとは思わない(保持するための参照を取得できるようにするため)。

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

Flutterを使用して整数をFirestoreに保存する方法

分類Dev

Flutterを使用してFirestoreに複数行のテキストを保存する

分類Dev

Flutter FireStore

分類Dev

Firestore / Flutter-現在のユーザーデータをデバイスにローカルに保存します

分類Dev

Google Map APIキーをFirestoreに保存しても大丈夫ですか?(Flutterアプリからの呼び出し)

分類Dev

Firestoreにのみ時間を保存する

分類Dev

Flutter-フォームの送信時にDropDownMenuの選択したインデックスをFireStoreに保存するにはどうすればよいですか?

分類Dev

Firestoreデータ構造化:Firestoreに注文を保存する

分類Dev

Flutter firestore compound query

分類Dev

Flutter Firestore cache stream

分類Dev

Flutter&Cloud Firestore

分類Dev

flutter:ユーザーデータをfirestoreからVariablesに保存したいのですが、nullが返されます

分類Dev

Convert Firestore DocumentSnapshot to Map in Flutter

分類Dev

Is there a converter method for the object in firestore in flutter?

分類Dev

Firebase cloud firestore not working in flutter

分類Dev

Firestore的Flutter StreamBuilder connectionState问题

分類Dev

Firestoreに保存されている配列を削除したい

分類Dev

Firebase Cloud FirestoreにGeoPointを保存する方法は?

分類Dev

IDをFirestoreドキュメントに保存します

分類Dev

数値は文字列としてfirestoreに保存されます

分類Dev

Firestoreにデータを保存する方法(Swift)

分類Dev

「カスタムblob」をFirestoreに保存できません

分類Dev

小さな画像をFirestoreに保存しても安全ですか?

分類Dev

Firestoreに正確な数字を保存する方法

分類Dev

Firestoreにタイムスタンプを保存する方法は?

分類Dev

「カスタムblob」をFirestoreに保存できません-ADMINSDK

分類Dev

Firebase Real Time DatabaseデータをFirestoreに保存しますか?

分類Dev

JsonifiedJavaオブジェクトをFirestoreに保存する

分類Dev

文字列をfirestoreから変数に保存します

Related 関連記事

  1. 1

    Flutterを使用して整数をFirestoreに保存する方法

  2. 2

    Flutterを使用してFirestoreに複数行のテキストを保存する

  3. 3

    Flutter FireStore

  4. 4

    Firestore / Flutter-現在のユーザーデータをデバイスにローカルに保存します

  5. 5

    Google Map APIキーをFirestoreに保存しても大丈夫ですか?(Flutterアプリからの呼び出し)

  6. 6

    Firestoreにのみ時間を保存する

  7. 7

    Flutter-フォームの送信時にDropDownMenuの選択したインデックスをFireStoreに保存するにはどうすればよいですか?

  8. 8

    Firestoreデータ構造化:Firestoreに注文を保存する

  9. 9

    Flutter firestore compound query

  10. 10

    Flutter Firestore cache stream

  11. 11

    Flutter&Cloud Firestore

  12. 12

    flutter:ユーザーデータをfirestoreからVariablesに保存したいのですが、nullが返されます

  13. 13

    Convert Firestore DocumentSnapshot to Map in Flutter

  14. 14

    Is there a converter method for the object in firestore in flutter?

  15. 15

    Firebase cloud firestore not working in flutter

  16. 16

    Firestore的Flutter StreamBuilder connectionState问题

  17. 17

    Firestoreに保存されている配列を削除したい

  18. 18

    Firebase Cloud FirestoreにGeoPointを保存する方法は?

  19. 19

    IDをFirestoreドキュメントに保存します

  20. 20

    数値は文字列としてfirestoreに保存されます

  21. 21

    Firestoreにデータを保存する方法(Swift)

  22. 22

    「カスタムblob」をFirestoreに保存できません

  23. 23

    小さな画像をFirestoreに保存しても安全ですか?

  24. 24

    Firestoreに正確な数字を保存する方法

  25. 25

    Firestoreにタイムスタンプを保存する方法は?

  26. 26

    「カスタムblob」をFirestoreに保存できません-ADMINSDK

  27. 27

    Firebase Real Time DatabaseデータをFirestoreに保存しますか?

  28. 28

    JsonifiedJavaオブジェクトをFirestoreに保存する

  29. 29

    文字列をfirestoreから変数に保存します

ホットタグ

アーカイブ