Flutter — определить высоту и ширину экрана
Недавно мы создали приложение Flutter, и оно работает хорошо, но когда мы установили то же приложение на другое устройство с большим экраном, оно выдает ошибку. Когда мы переключаем устройство на новое устройство, контейнер становится слишком длинным и выдает ошибку. Это означает, что приложение должно реагировать на любой экран. Flutter дает нам возможность сделать отзывчивый экран, рассчитав размер экрана. Мы можем рассчитать высоту и ширину экрана с помощью MediaQuery .
double width = MediaQuery.of(context).size.width; // Gives the width double height = MediaQuery.of(context).size.height; // Gives the height
Пример видео приведен ниже, чтобы получить представление о том, что мы собираемся делать в этой статье.
Пошаговая реализация
Шаг 1. Создайте новый проект в Android Studio.
Чтобы настроить Flutter Development в Android Studio, обратитесь к разделу «Настройка Android Studio для разработки Flutter», а затем создайте новый проект в Android Studio, обратитесь к разделу «Создание простого приложения во Flutter».
Шаг 2: Импорт пакета материалов
Добавление пакета материалов, который дает нам основные функции и вызывает метод runApp в основной функции, которая будет вызывать наше приложение.
import "package:flutter/material.dart"; void main() { runApp(RunMyApp()); }
Шаг 3: Создание виджета без сохранения состояния
Теперь нам нужно сделать виджет без сохранения состояния, потому что наше приложение не изменяет свое состояние, а затем возвращает виджет materialApp, который позволяет нам установить заголовок, тему и многое другое.
class RunMyApp extends StatelessWidget { const RunMyApp({super.key}); @override Widget build(BuildContext context) { return MaterialApp(); } }
Шаг 4: Создание виджета Scaffold
Укажите свойство home , и может появиться виджет скаффолда со свойствами AppBar и body . AppBar позволяет нам указать заголовок AppBar, цвет, начальный и конечный значок . В теле есть виджет Center , у которого Column является дочерним элементом, у Again Column может быть несколько дочерних элементов. Здесь у нас есть sizebox , текстовый виджет.
home: Scaffold( appBar: AppBar( title: Text("Getting height and width of the screen"), ), body: Center( child: Column( children: [ SizedBox( height: 150, ), Text("Width : " + MediaQuery.of(context).size.width.toString()), Text("Height : " + MediaQuery.of(context).size.height.toString()) ], )), ),
- MediaQuery.of(context).size.width дает ширину экрана и отображает с помощью текстового виджета.
- MediaQuery.of(context).size.height дает высоту экрана и отображает с помощью текстового виджета.
Окончательный код:
Dart
import "package:flutter/material.dart" ; void main() { runApp(MaterialApp(home: RunMyApp())); } class RunMyApp extends StatelessWidget { RunMyApp({super.key}); //double width = MediaQuery.of(context).size.width; //double height = MediaQuery.of(context).size.height; @override Widget build(BuildContext context) { return MaterialApp( debugShowCheckedModeBanner: false , theme: ThemeData(primarySwatch: Colors.green), home: Scaffold( appBar: AppBar( title: Text( "Getting Height and Width of the Green" ), ), body: Center( child: Column( children: [ SizedBox( height: 150, ), Text( "Width : " + MediaQuery.of(context).size.width.toString()), Text( "Height : " + MediaQuery.of(context).size.height.toString()) ], )), ), ); } } |