子组件
import 'package:flutter/material.dart';
class Demo extends StatefulWidget {
const Demo({super.key}); //key是比较关键的
@override
State<Demo> createState() => DemoState();
}
//_DemoState去掉下划线解除私域
class DemoState extends State<Demo> {
String str = '我是子组件的值';
@override
Widget build(BuildContext context) {
return Container();
}
}
子组件主要:
- key值
- 有状态组件去掉下划线,成为全局组件
父组件
class Father extends StatefulWidget {
const Father({super.key});
@override
State<Father> createState() => _FatherState();
}
class _FatherState extends State<Father> {
GlobalKey<DemoState> demoKey = GlobalKey<DemoState>(); //定义Global值
@override
Widget build(BuildContext context) {
return InkWell(
onTap: () {
print(demoKey.currentState?.str); //通过demoKey.currentState来获取内部的属性
},
child: Container(
child: Demo(
key: demoKey, //将定义的key值传递给子组件的key
),
),
);
}
}
父组件主要:
- 定义GlobalKey的值
- 将key值传递给子组件
- 通过GlobalKey的值的currentState访问属性和方法