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

如何将数据从子小部件传递到其父级

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

如何将数据从子小部件传递到其父级

第一种可能性是将回调传递给您的孩子,第二种可能性是将

of
模式用于有状态的小部件。见下文。

import 'package:flutter/material.dart';class MyStatefulWidget extends StatefulWidget {  @override  State<StatefulWidget> createState() => new MyStatefulWidgetState();  static MyStatefulWidgetState of(BuildContext context) {    final MyStatefulWidgetState navigator =        context.ancestorStateOfType(const TypeMatcher<MyStatefulWidgetState>());    assert(() {      if (navigator == null) {        throw new FlutterError( 'MyStatefulWidgetState operation requested with a context that does ' 'not include a MyStatefulWidget.');      }      return true;    }());    return navigator;  }}class MyStatefulWidgetState extends State<MyStatefulWidget> {  String _string = "Not set yet";  set string(String value) => setState(() => _string = value);  @override  Widget build(BuildContext context) {    return new Column(      children: <Widget>[        new Text(_string),        new MyChildClass(callback: (val) => setState(() => _string = val))      ],    );  }}typedef void StringCallback(String val);class MyChildClass extends StatelessWidget {  final StringCallback callback;  MyChildClass({this.callback});  @override  Widget build(BuildContext context) {    return new Column(      children: <Widget>[        new FlatButton(          onPressed: () { callback("String from method 1");          },          child: new Text("Method 1"),        ),        new FlatButton(          onPressed: () { MyStatefulWidget.of(context).string = "String from method 2";          },          child: new Text("Method 2"),        )      ],    );  }}void main() => runApp(      new MaterialApp(        builder: (context, child) => new SafeArea(child: new Material(color: Colors.white, child: child)),        home: new MyStatefulWidget(),      ),    );

也可以使用InheritedWidget而不是StatefulWidget。如果您希望在父级窗口小部件的数据更改并且父级不是直接父级的情况下重建子级窗口小部件时,这特别有用。请参阅继承的小部件文档



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

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

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