我有以下自定义小部件,它可以创建Switch并读取其状态(true/false)
然后我将这个添加到我的主应用程序小部件(父级),如何让父级知道交换机的值!
import 'package:flutter/material.dart';
class Switchy extends StatefulWidget{
Switchy({Key key}) : super(key: key);
@override
State<StatefulWidget> createState() => new _SwitchyState();
}
class _SwitchyState extends State<Switchy> {
var myvalue = true;
void onchange(bool value) {
setState(() {
this.myvalue = value; // I need the parent to receive this one!
print('value is: $value');
});
}
@override
Widget build(BuildContext context) {
return
new Card(
child: new Container(
child: new Row(
mainAxisAlignment: MainAxisAlignment.end,
children: <Widget>[
new Text("Enable/Disable the app in the background",
textAlign: …Run Code Online (Sandbox Code Playgroud) class ExtractArgumentsScreen extends StatelessWidget {
static const routeName = '/extractArguments';
double price = 0;
_changeprice(num){
setState(){
price+ = num;
}
}
@override
Widget build(BuildContext context) {
final MealArguments args = ModalRoute.of(context).settings.arguments;
return Scaffold(
appBar: AppBar(
title: Text('MyApp'),
),
body: Column(
crossAxisAlignment: CrossAxisAlignment.stretch,
children: <Widget>[
SizedBox(height: 20,),
ViewCard(args.combo,_changeprice()),
]));
Run Code Online (Sandbox Code Playgroud)
这是父类。我将函数传递_changePrice()给ViewCard以便我可以稍后更改价格的值。这给了我一个
错误“需要 1 个必需参数,但找到 0 个”
但我不能传递一个参数,_changePrice因为这违背了使用这个回调的全部目的。我正在尝试实现的内容类似于将数据发送到 Flutter 中的父 Widget 中所建议的内容。
子类 ViewCard 将此回调传递给另一个名为 的子类OneItem。
class OneItem extends StatefulWidget {
OneItem(this.combo, this.index, …Run Code Online (Sandbox Code Playgroud) 我有一个根类RootPage,StatefulWidget它始终在视图中.我想改变body的RootPage是通过控制RootPage's currentPage Widget从不同的类,如我的FeedPage类和其他类,我做什么呢?
示例代码
import 'package:flutter/material.dart';
class RootPage extends StatefulWidget {
@override
_RootPageState createState() => new _RootPageState();
}
class _RootPageState extends State<RootPage> {
FeedPage feedPage;
Widget currentPage;
@override
void initState() {
super.initState();
feedPage = FeedPage();
currentPage = feedPage;
}
@override
Widget build(BuildContext context) {
return new Scaffold(
//Current page to be changed from other classes too?
body: currentPage
);
}
}
class FeedPage extends StatefulWidget {
@override
_feedPageState …Run Code Online (Sandbox Code Playgroud)