根据您的用例,有很多方法可以做到这一点。以下是一些选择:
- 您可以将创建的对象公开为的公共成员
State
。然后使用in in 的currentState
属性来获取对另一个的引用。现在,您可以通过公共成员访问创建的对象。(注意:此模式限制了您的可测试性和封装性,因此请谨慎使用。)GlobalKey
State``State``State
- 这两个窗口小部件都可以具有一个祖先窗口小部件,该窗口小部件可以对其进行扩展
InheritedWidget
以查找创建的对象。 - 这两个小部件都可以在其构造函数中传递模型参数,例如
ValueNotifier
。他们可以使用此对象读取和写入值。
如果您对用例有更详细的了解,我们可以帮助您选择一个有意义的模式。
这是一些实现选项1的代码。
import 'package:flutter/material.dart';void main() { runApp(new MyApp());}final key = new GlobalKey<MyStatefulWidget1State>();class MyApp extends StatelessWidget { @override Widget build(BuildContext context) { return new MaterialApp( home: new Scaffold( body: new Column( mainAxisAlignment: MainAxisAlignment.spaceAround, children: <Widget>[ new MyStatefulWidget1(key: key), new MyStatefulWidget2(), ], ), ), ); }}class MyStatefulWidget1 extends StatefulWidget { MyStatefulWidget1({ Key key }) : super(key: key); State createState() => new MyStatefulWidget1State();}class MyStatefulWidget1State extends State<MyStatefulWidget1> { String _createdObject = "Hello world!"; String get createdObject => _createdObject; @override Widget build(BuildContext context) { return new Center( child: new Text(_createdObject), ); }}class MyStatefulWidget2 extends StatefulWidget { State createState() => new MyStatefulWidget2State();}class MyStatefulWidget2State extends State<MyStatefulWidget2> { String _text = 'PRESS ME'; @override Widget build(BuildContext context) { return new Center( child: new RaisedButton( child: new Text(_text), onPressed: () { setState(() { _text = key.currentState.createdObject; }); }, ), ); }}


