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

Метод dispose

Метод dispose класса ScrollController отпускает контроллер прокрутки и снимает его слушателей. Вызов ставят в dispose состояния, когда контроллер больше не нужен.

Синтаксис

controller.dispose()

Пример

Давайте вызовем его в простом экране:

import 'package:flutter/material.dart'; class DisposeDemo extends StatefulWidget { @override State<DisposeDemo> createState() => _DisposeDemoState(); } class _DisposeDemoState extends State<DisposeDemo> { late final ScrollController controller = ScrollController(); @override void dispose() { controller.dispose(); super.dispose(); } @override Widget build(BuildContext context) { return ListView(controller: controller, children: [Text('abcde')]); } } void main() { runApp(MaterialApp(home: Scaffold(body: DisposeDemo()))); }

На экране список работает, контроллер освобождается при уничтожении State.

Пример

Давайте повторим вызов с другими числами:

import 'package:flutter/material.dart'; class DisposeDemo2 extends StatefulWidget { @override State<DisposeDemo2> createState() => _DisposeDemo2State(); } class _DisposeDemo2State extends State<DisposeDemo2> { ScrollController? controller; @override void initState() { super.initState(); controller = ScrollController(); } @override void dispose() { controller?.dispose(); super.dispose(); } @override Widget build(BuildContext context) { return ListView(controller: controller, children: [Text('12345')]); } } void main() { runApp(MaterialApp(home: Scaffold(body: DisposeDemo2()))); }

На экране тот же список, dispose безопасен для nullable controller.

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

  • метод animateTo,
    который часто ставят рядом в прокручиваемых экранах
  • класс ScrollPosition,
    который дополняет работу с прокруткой
  • метод jumpTo,
    который помогает собрать сложный список
  • метод jumpTo,
    который задаёт поведение или данные прокрутки
← →
↑
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить