Создаем портфолио за 1 месяц
К концу месяца: 4 классных проекта в вашем портфолио! Стоимость: 100$. Подробности...
681 of 1024 menu
◀ ▶

Виджет InteractiveViewer

Виджет InteractiveViewer оборачивает child и даёт жесты масштаба и прокрутки. Минимум и максимум зума задают minScale и maxScale. Пан и pinch включают panEnabled и scaleEnabled. За пределы экрана не даёт вылезти boundaryMargin.

Синтаксис

InteractiveViewer( minScale: 0.5, maxScale: 4, child: child, )

Параметры

Параметр Описание
child Дочерний виджет, который масштабируют и двигают.
minScale Минимальный коэффициент масштаба.
maxScale Максимальный коэффициент масштаба.
panEnabled Разрешить сдвиг содержимого.
scaleEnabled Разрешить pinch zoom.
boundaryMargin Запас за границами, куда можно увести child.

Пример

Давайте увеличим большую картинку-заглушку:

import 'package:flutter/material.dart'; void main() { runApp( MaterialApp( home: Scaffold( body: InteractiveViewer( minScale: 0.8, maxScale: 3, child: Container( width: 600, height: 400, color: Colors.blueGrey, alignment: Alignment.center, child: const Text( 'abcde', style: TextStyle( fontSize: 48, color: Colors.white, ), ), ), ), ), ), ); }

На экране серая область больше окна; pinch увеличивает текст, pan сдвигает панораму.

Пример

Давайте отключим масштаб и оставим только сдвиг:

import 'package:flutter/material.dart'; void main() { runApp( MaterialApp( home: Scaffold( body: InteractiveViewer( scaleEnabled: false, panEnabled: true, child: SizedBox( width: 800, height: 200, child: Row( children: List.generate( 5, (i) => Expanded( child: Container( color: Colors.primaries[i], alignment: Alignment.center, child: Text('12345'), ), ), ), ), ), ), ), ), ); }

На экране широкая полоса из цветных блоков; её можно тянуть в стороны, zoom не работает.

Смотрите также

  • виджет GestureDetector,
    который двигает один виджет без масштаба
  • виджет Dismissible,
    который смахивает пункт списка
  • виджет Listener,
    который получает сырые события указателя
  • виджет IgnorePointer,
    который блокирует жесты для поддерева
← →
↑
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить