栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

如何在flutter中访问在另一个有状态小部件中的一个有状态小部件中创建的对象

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

如何在flutter中访问在另一个有状态小部件中的一个有状态小部件中创建的对象

根据您的用例,有很多方法可以做到这一点。以下是一些选择:

  1. 您可以将创建的对象公开为的公共成员
    State
    。然后使用in in 的
    currentState
    属性来获取对另一个的引用。现在,您可以通过公共成员访问创建的对象。(注意:此模式限制了您的可测试性和封装性,因此请谨慎使用。)
    GlobalKey
    State``State``State
  2. 这两个窗口小部件都可以具有一个祖先窗口小部件,该窗口小部件可以对其进行扩展
    InheritedWidget
    以查找创建的对象。
  3. 这两个小部件都可以在其构造函数中传递模型参数,例如
    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;          });        },      ),    );  }}


转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/418494.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号