Как получить y позицию виджета, когда он выключен - PullRequest
0 голосов
/ 26 апреля 2020

Я использую 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 становится нулевым, когда связанный виджет не представлен в окне просмотра экрана.

Возможно ли получить позицию виджета, когда он находится вне экрана?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...