美文网首页
flutter之globalkey父组件对子组件的引用分析

flutter之globalkey父组件对子组件的引用分析

作者: 小话001 | 来源:发表于2021-04-19 14:42 被阅读0次
import 'package:flutter/material.dart';
void main() => runApp(MyApp());
class MyApp extends StatelessWidget {
  // This widget is the root of your application.
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'Flutter Demo',
      home: HomePage(),
    );
  }
}

class HomePage extends StatelessWidget {
  final String title = "测试";
  final GlobalKey<_HomeContentState> homeKey = GlobalKey();
  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text(title),
      ),
      body: HomeContent(key: homeKey),
      floatingActionButton: FloatingActionButton(
        child: Icon(Icons.gesture),
        onPressed: () {
         // 正常情况下如果当前组件想访问HomeContent 与_HomeContentState 的内容
         // 那么可以使用 static 静态变量修饰,但是这也可以用globalkey帮助我们访问某个Widget的信息,包括State或Widget或Element等对象
          print(homeKey.currentState.message);
          print(homeKey.currentState.widget.name);
          homeKey.currentState.test();
        },
      ),
    );
  }
}

class HomeContent extends StatefulWidget {
  final String name = "coderwhy";

  HomeContent({Key key}): super(key: key);

  @override
  _HomeContentState createState() => _HomeContentState();
}

class _HomeContentState extends State<HomeContent> {
  final String message = "123";

  void test() {
    print("testtesttest");
  }

  @override
  Widget build(BuildContext context) {
    return Text(message);
  }
}

相关文章

网友评论

      本文标题:flutter之globalkey父组件对子组件的引用分析

      本文链接:https://www.haomeiwen.com/subject/otmilltx.html