2024-01-15 15:26:13 +00:00
|
|
|
import 'package:flutter/material.dart';
|
|
|
|
|
import 'package:flutter_hooks/flutter_hooks.dart';
|
|
|
|
|
|
|
|
|
|
/// Creates a [DraggableScrollableController] that will be disposed automatically.
|
|
|
|
|
///
|
|
|
|
|
/// See also:
|
|
|
|
|
/// - [DraggableScrollableController]
|
2025-07-29 00:34:03 +05:30
|
|
|
DraggableScrollableController useDraggableScrollController({List<Object?>? keys}) {
|
|
|
|
|
return use(_DraggableScrollControllerHook(keys: keys));
|
2024-01-15 15:26:13 +00:00
|
|
|
}
|
|
|
|
|
|
2025-07-25 08:07:22 +05:30
|
|
|
class _DraggableScrollControllerHook extends Hook<DraggableScrollableController> {
|
2025-07-29 00:34:03 +05:30
|
|
|
const _DraggableScrollControllerHook({super.keys});
|
2024-01-15 15:26:13 +00:00
|
|
|
|
|
|
|
|
@override
|
2025-07-25 08:07:22 +05:30
|
|
|
HookState<DraggableScrollableController, Hook<DraggableScrollableController>> createState() =>
|
|
|
|
|
_DraggableScrollControllerHookState();
|
2024-01-15 15:26:13 +00:00
|
|
|
}
|
|
|
|
|
|
2025-07-25 08:07:22 +05:30
|
|
|
class _DraggableScrollControllerHookState
|
|
|
|
|
extends HookState<DraggableScrollableController, _DraggableScrollControllerHook> {
|
2024-01-15 15:26:13 +00:00
|
|
|
late final controller = DraggableScrollableController();
|
|
|
|
|
|
|
|
|
|
@override
|
|
|
|
|
DraggableScrollableController build(BuildContext context) => controller;
|
|
|
|
|
|
|
|
|
|
@override
|
|
|
|
|
void dispose() => controller.dispose();
|
|
|
|
|
|
|
|
|
|
@override
|
|
|
|
|
String get debugLabel => 'useDraggableScrollController';
|
|
|
|
|
}
|