Я использую ExpansionTile
, и под ним есть виджет, который я хочу получить, когда раскрываю ExpansionTile
, я использую GlobalKey
, чтобы получить связанный контекст:
import 'package:flutter/material.dart';
class ListViewScrolling extends StatefulWidget {
@override
_ListViewScrollingState createState() => _ListViewScrollingState();
}
class _ListViewScrollingState extends State<ListViewScrolling> {
GlobalKey exitKey = GlobalKey();
@override
Widget build(BuildContext context) {
return MaterialApp(
home: SafeArea(
child: Scaffold(
body: ListView(
children: <Widget>[
ExpansionTile(
title: Text('Open'),
onExpansionChanged: (expanded) {
var keyContext = exitKey.currentContext;
if (expanded) {
setState(() {
Future.delayed(Duration(milliseconds: 200), () {//I want to get the position when the ExpansionTile finishes expanding.
keyContext = exitKey.currentContext;
assert(keyContext != null, '***keyContext IS NULL***');
print(keyContext);
});
});
}
},
children: <Widget>[
FlatButton(onPressed: () {}, child: Text('1')),
FlatButton(onPressed: () {}, child: Text('2')),
FlatButton(onPressed: () {}, child: Text('3')),
.
.
.
FlatButton(onPressed: () {}, child: Text('30')),
]),
FlatButton(key: exitKey, onPressed: null, child: Text('Exit'))
],
),
)),
);
}
}
Я обнаружил, что exitKey.currentContext
становится нулевым, когда связанный виджет не представлен в окне просмотра экрана.
Возможно ли получить позицию виджета, когда он находится вне экрана?