【问题标题】:Flutter: Getting Value From TextField from class A and Pass it To Another class BFlutter:从A类的TextField中获取值并将其传递给另一个B类
【发布时间】:2021-03-10 05:55:29
【问题描述】:

我开发了一个应用程序,用户可以在其中在文本字段中输入文本。这些文本字段位于 HomeScreen(homescreen.dart) 类下;

            Padding(
            padding: const EdgeInsets.all(8.0),
            child: TextField(
              decoration: InputDecoration(
                border: OutlineInputBorder(

                  borderSide: BorderSide(color: Colors.blue)
                ),
                labelText: 'EMO Sicil No',
                prefixIcon: const Icon(Icons.person, color: Colors.blue,),
                hintText: "EMO Sicil No Giriniz",
              ),
            ),
          ),

我将在这里使用控制器。但是我想在DocUpload.dart里面的Uploader类下使用Emo Sicil No的值

         class Uploader extends StatefulWidget {
         final File file;

         Uploader({Key key, this.file}) : super(key: key);

         createState() => _UploaderState();
           }

          class _UploaderState extends State<Uploader> {
          final FirebaseStorage _storage =
          FirebaseStorage(storageBucket: 'gs://emo-is0.appspot.com');

             StorageUploadTask _uploadTask;

             _startUpload() async {

              String filePath = 'foyler/${DateTime.now()}.png';

// 我想在这里使用 Emo Sicil No。 filePath 的结构将是 ;

            String filePath = 'emosicilno/foyler/${DateTime.now()}.png';

这个emo sicil no将来自homescreen.dart下的texfield

              StorageUploadTask _uploadTask = 
                         _storage.ref().child(filePath).putFile(widget.file);

我不确定我该如何处理。我需要在 homescreen.dart 中获取文本字段的值并在 docupload.dart 类上传器中使用它

请指教!

【问题讨论】:

    标签: firebase flutter dart firebase-storage textfield


    【解决方案1】:

    你需要先为类创建setter,然后在下面创建一个类的实例:

        class _UploaderState extends State<Uploader>{
            ClassName class = ClassName()
    

    要获取文本字段的值,您需要创建一个 TextEditingController :

    final myTextController = TextEditingController();
    

    然后像这样将它关联到文本字段:

        TextField(
                **controller: myTextController,**
                      decoration: InputDecoration(
                        border: OutlineInputBorder(
        
                          borderSide: BorderSide(color: Colors.blue)
                        ),
                        labelText: 'EMO Sicil No',
                        prefixIcon: const Icon(Icons.person, color: Colors.blue,),
                        hintText: "EMO Sicil No Giriniz",
                      ),
                    ),
    

    要获取文本字段的值,只需写myTextController.text

    我可以在主屏幕下获取文本。如何将它传递给 docupload.dart 下的另一个类上传器?

    【讨论】:

      【解决方案2】:

      对于这种行为,您可能需要为 Flutter 使用一些状态管理解决方案。如ProviderBloc

      使用这些,您可以创建一个可在任何小部件中访问的变量,更新其值并通知所有使用它的地方已更新以重建它们。

      【讨论】:

        【解决方案3】:

        据我了解,您想使用从主屏幕到上传器屏幕的 textFiled 值。 为此,您可以在导航到下一个屏幕(myTextController.text)时从控制器获取 textFiled 的值,并将其作为参数传递给下一个屏幕。

        如果我把我的代码发给你,你能不能帮我做,因为我做不到?

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2014-03-16
          • 2020-09-13
          • 1970-01-01
          • 2018-02-05
          • 2020-12-30
          • 1970-01-01
          • 2021-06-19
          • 2014-02-24
          相关资源
          最近更新 更多