Это кажется невозможным изнутри дротика на данный момент на Android из-за флаттера, игнорирующего нижний системный интерфейс (то есть кнопки).
Я подумал, что это может быть ошибкой, но если вы внимательно посмотрите наВ документации никогда не говорится, что window.physicalSize
или MediaQueryData.size
- это физические размеры экрана, а скорее размер, на который может отображаться флаттер.Это, вероятно, имеет смысл, иначе каждое отдельное приложение должно обязательно принять это во внимание.
Итак, вам нужно будет использовать каналы методов для связи сандроид напрямую.Я уже посмотрел, и, похоже, нет никаких плагинов, делающих это, так что вы можете объединить их в один, если вы чувствуете себя амбициозным.Но то, что вы хотите сделать, это позвонить в native и затем получить физический размер экрана непосредственно в Java-коде.Если вы сделаете это, вам, вероятно, будет лучше реализовать его и для iOS, хотя такой же проблемы там не существует (вы могли бы даже сделать это прямо в трепете с помощью if / else).
К счастьюкто-то делал это раньше, так что вы можете использовать это в качестве примера: https://github.com/magnatronus/flutter-displaymetrics. Предполагая, что displayMetrics дает вам правильный размер.
Надеюсь, что это помогает, и извините, у меня нет более простого ответа длявы!