我正在通过flutter教程在此链接上管理其父控件的状态[https://flutter.dev/docs/development/ui/interactive#parent-managed][1] 而且我不知道在这种情况下如何调用小部件
答案 0 :(得分:0)
一旦掌握了逻辑,这将非常简单。
在实践中,父级(您称为“ true”小部件),即
class ParentWidget extends StatefulWidget {
@override
_ParentWidgetState createState() => _ParentWidgetState();
}
是您在代码的其余部分中随时随地都可以调用的代码。
由于这是一个有状态小部件,因此它表示已声明(为简单起见,它将管理UI上的所有更改)。任何更改都会发生,它将更改其状态,因此,此代码:
class _ParentWidgetState extends State<ParentWidget> {
bool _active = false;
void _handleTapboxChanged(bool newValue) {
setState(() {
_active = newValue;
});
}
@override
Widget build(BuildContext context) {
return Container(
child: TapboxB(
active: _active,
onChanged: _handleTapboxChanged,
),
);
}
}
无论如何,一旦使用了有状态的小部件,只要想调用该函数,就可以更改其状态
setState(() {
oldValue= newValue;
});
它将重建整个窗口小部件,从而更改所需的内容(例如文本,图像,窗口小部件等)。 以一种不正确的方式,将其视为可以在一段时间内更改其UI的特定小部件。
答案 1 :(得分:0)
innerHTML
或者用其他有状态的小部件包装小部件,该小部件将在MyApp的构建方法中使用
void main() => runApp(MyApp());
//we make MyApp to be a stateful widget
class MyApp extends StatefulWidget {
@override
_MyAppState createState() => _MyAppState();
}
class _MyAppState extends State<MyApp> {
//we define the state which will be used in the widget here
var myState = "something";
@override
Widget build(BuildContext context) {
return MaterialApp(
title: 'Material App',
home: Scaffold(
appBar: AppBar(
title: Text('Material App Bar'),
),
body: Center(
child: Container(
//the data used by MyWidget is managed by MyApp which is a statefull widget.
child: MyWidget(state: myState),
),
),
),
);
}
}