如何解决Flutter-在另一个类中进行修改时获取复选框反馈
伙计们,我在另一个类中创建了一些复选框,以避免在修改它们时出现刷新,但我无法将其取回。有人能帮我吗? 我将代码留在下面..
在我的主页上,我调用包含此类复选框的类..
我尝试了所有可能的方法,但无法在主页上获取复选框的值
**//here I call the click event on my main page**
TipoPagamento(
onChanged: (v) {
setState(() {
print(v);
});
}
),//**this is where i set up my checkbox.**
import 'package:flutter/material.dart';
class TipoPagamento extends StatefulWidget {
@override
_TipoPagamentoState createState() => _TipoPagamentoState();
final ValueChanged<int> onChanged;
const TipoPagamento({Key key,@required this.onChanged}) : super(key: key);
}
class _TipoPagamentoState extends State<TipoPagamento> {
TextEditingController nameController = TextEditingController();
int _radioValue = 0;
@override
_handleRadioValueChange(int value) {
setState(() {
_radioValue = value;
switch (_radioValue) {
case 1:
break;
case 2:
break;
case 3:
break;
}
});
return(_radioValue);
}
@override
Widget build(BuildContext context) {
return buildTextField();
}
Widget buildTextField() {
return new Row(
mainAxisAlignment: MainAxisAlignment.center,children: [
new Radio(
value: 1,groupValue: _radioValue,onChanged: _handleRadioValueChange,),new Text(
'Débito',style: new TextStyle(fontSize: 16.0),new Radio(
value: 2,new Text(
'Crédito',style: new TextStyle(
fontSize: 16.0,new Radio(
value: 3,new Text(
'Dinheiro',],);
}
}
解决方法
您可以在下面复制粘贴运行完整代码
您可以在widget.onChanged(_radioValue);
中致电_handleRadioValueChange
代码段
_handleRadioValueChange(int value) {
setState(() {
_radioValue = value;
switch (_radioValue) {
case 1:
break;
case 2:
break;
case 3:
break;
}
});
widget.onChanged(_radioValue);
return (_radioValue);
}
工作演示
工作演示的输出
I/flutter ( 6880): v 1
I/flutter ( 6880): v 2
完整代码
import 'package:flutter/material.dart';
class TipoPagamento extends StatefulWidget {
@override
_TipoPagamentoState createState() => _TipoPagamentoState();
final ValueChanged<int> onChanged;
const TipoPagamento({Key key,@required this.onChanged}) : super(key: key);
}
class _TipoPagamentoState extends State<TipoPagamento> {
TextEditingController nameController = TextEditingController();
int _radioValue = 0;
_handleRadioValueChange(int value) {
setState(() {
_radioValue = value;
switch (_radioValue) {
case 1:
break;
case 2:
break;
case 3:
break;
}
});
widget.onChanged(_radioValue);
return (_radioValue);
}
@override
Widget build(BuildContext context) {
return buildTextField();
}
Widget buildTextField() {
return Row(
mainAxisAlignment: MainAxisAlignment.center,children: [
Radio(
value: 1,groupValue: _radioValue,onChanged: _handleRadioValueChange,),Text(
'Débito',style: TextStyle(fontSize: 16.0),Radio(
value: 2,Text(
'Crédito',style: TextStyle(
fontSize: 16.0,Radio(
value: 3,Text(
'Dinheiro',],);
}
}
void main() {
runApp(MyApp());
}
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return MaterialApp(
title: 'Flutter Demo',theme: ThemeData(
primarySwatch: Colors.blue,visualDensity: VisualDensity.adaptivePlatformDensity,home: MyHomePage(title: 'Flutter Demo Home Page'),);
}
}
class MyHomePage extends StatefulWidget {
MyHomePage({Key key,this.title}) : super(key: key);
final String title;
@override
_MyHomePageState createState() => _MyHomePageState();
}
class _MyHomePageState extends State<MyHomePage> {
int _counter = 0;
void _incrementCounter() {
setState(() {
_counter++;
});
}
@override
void initState() {
super.initState();
}
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text(widget.title),body: Center(
child: Column(
mainAxisAlignment: MainAxisAlignment.center,children: <Widget>[
TipoPagamento(onChanged: (v) {
setState(() {
print("v $v");
});
}),floatingActionButton: FloatingActionButton(
onPressed: _incrementCounter,tooltip: 'Increment',child: Icon(Icons.add),);
}
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。