[英]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.