繁体   English   中英

Flutter 将数据从一个 class 传递到另一个(有状态小部件)

[英]Flutter pass data from one class to another(statefull widget)

我如何传递通过_textController 从用户那里获得的数据并将其保存在另一个 class 上的变量中? 我想获取从用户那里获取的数据并将其保存在另一个 class 上的变量中

 final _textController = TextEditingController();
  String userPost = "";
  @override
  Widget build(BuildContext context) {
    final double height = MediaQuery.of(context).size.height;
    final double width = MediaQuery.of(context).size.width;
    return ScreenUtilInit(
        designSize: const Size(375, 812),
        minTextAdapt: true,
        splitScreenMode: true,
        builder: (context, child) {
          return MaterialApp(
            debugShowCheckedModeBanner: false,
            home: Scaffold(
              backgroundColor: Colors.amber,
              body: Container(
                decoration: const BoxDecoration(
                    gradient: LinearGradient(
                        begin: Alignment.topCenter,
                        end: Alignment.bottomCenter,
                        colors: [
                      Color.fromRGBO(95, 44, 130, 1),
                      Color.fromRGBO(73, 160, 157, 1),
                    ])),
                
                      Padding(
                        padding: EdgeInsets.all(60.sp),
                        child: TextFormField(
                          controller: _textController,
                          decoration: InputDecoration(
                              labelText: 'What s your name?',
                              suffixIcon: IconButton(
                                  onPressed: () {
                                    _textController.clear();
                                  },
                                  icon: const Icon(Icons.clear))),
                        ),
                      ),
                      SizedBox(
                        height: 5.h,
                      ),
                      MaterialButton(
                        elevation: 0,
                        onPressed: () {
                          setState(() {
                            userPost = _textController.text;
                            _textController.clear();
                          });
                        },

并显示在这里:

 showToast();
                        NotificationService().showNotification(
                          1,
                          'You can, ',
                          randomName!,
                        );
                      },

我不知道如何传递数据

我想你可以使用Riverpod StateProvider。

final valueProvider = StateProvider<String>(
  (ref) => "",
);

要使用此valueProvider ,您必须使用 ConsumerStatefulWidget 而不是 StatefulWidget

编辑valueProvider

ref.watch(valueProvider.state).state = _textController.text

使用来自另一个 ConsumerStatefulWidget 的valueProvider

final text = ref.watch(valueProvider.notifier).state

笔记

我建议你看看Flutter 主题中的 State 管理,我认为这是 Flutter 开发的关键部分。

您可以简单地在 onpressed() 中为任何按钮调用 showtoast() function 并将其传递给您要使用的参数,

作为

onpressed() 
{
showtoast('message to toast');
other code--
}

并改变这个

 showToast();
                        NotificationService().showNotification(
                          1,
                          'You can, ',
                          randomName!,
                        );
                      },

 showToast(String message);
                        NotificationService().showNotification(
                          1,
                          'You can, ',
                          message,
                        );
                      },

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM