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);
}
}
网友评论