Files
MWClash/lib/common/context.dart

45 lines
1018 B
Dart
Raw Normal View History

import 'package:fl_clash/manager/manager.dart';
2024-04-30 23:38:49 +08:00
import 'package:fl_clash/widgets/scaffold.dart';
import 'package:flutter/material.dart';
extension BuildContextExtension on BuildContext {
CommonScaffoldState? get commonScaffoldState {
return findAncestorStateOfType<CommonScaffoldState>();
}
showNotifier(String text) {
return findAncestorStateOfType<MessageManagerState>()?.message(text);
}
Size get appSize {
return MediaQuery.of(this).size;
}
double get viewWidth {
return appSize.width;
2024-04-30 23:38:49 +08:00
}
ColorScheme get colorScheme => Theme.of(this).colorScheme;
TextTheme get textTheme => Theme.of(this).textTheme;
T? findLastStateOfType<T extends State>() {
T? state;
visitor(Element element) {
if(!element.mounted){
return;
}
if(element is StatefulElement){
if (element.state is T) {
state = element.state as T;
}
}
element.visitChildren(visitor);
}
visitor(this as Element);
return state;
}
2024-04-30 23:38:49 +08:00
}