Flutter Context DTX
This extension package provides easy access to the most commonly used properties, functions, and additional convenience methods that depend on the BuildContext instance.
Based on package build_context.
Install
Add it in your pubspec.yaml
:
dependencies:
flutter_context_dtx:
Import it where you want to use it e.g, in your widget's file.
import 'package:flutter_context_dtx/flutter_context_dtx.dart';
Usage
import 'package:flutter/material.dart';
import "package:flutter_context_dtx/flutter_context_dtx.dart";
class MyHomePage extends StatelessWidget {
@override
Widget build(BuildContext context) {
return Scaffold(
backgroundColor: context.scaffoldBackgroundColor, // There is no Theme.of(context)
body: Center(
child: GestureDetector(
onTap: () => context.pushNamed('/detailsPage'), // we use only context not Navigator.of(context)
child: Text(
'Press Me',
style: context.subtitle1Style, // we use only context not Theme.of(context)
),
),
),
);
}
}
Available Extensions
MediaQuery:
⚠️ Note: The breakpoints are based on the material design.
-
context.mediaQuery
-
context.screenSize
-
context.screenPadding
-
context.viewPadding
-
context.viewInsets
-
context.screenWidth
-
context.screenHeight
-
context.statusBarHeight
-
context.orientation
-
context.isLandscape
-
context.isPortrait
-
context.alwaysUse24HourFormat
-
context.screenDensity
-
context.platformBrightness
-
context.textScaleFactor
-
context.shortestScreenSide
-
context.longestScreenSide
-
context.isSmallPhoneScreen
-
context.isMediumPhoneScreen
-
context.isLargePhoneScreen
-
context.isSmallTabletScreen
-
context.isLargeTabletScreen
-
context.isPhoneScreen
-
context.isTabletScreen
-
context.isLaptopScreen
-
context.isDesktopScreen
-
context.isXSmallScreen
-
context.isXXSmallScreen
-
context.isSmallScreen
-
context.isSmallScreen
-
context.isMediumScreen
-
context.isLargeScreen
-
context.isXLargeScreen
-
context.margin
-
context.columns
-
context.widthBody
Navigator:
context.push()
context.replacement()
context.pushNamed()
context.pushReplacementNamed()
context.popAndPushNamed()
context.pushNamedAndRemoveUntil()
context.ushAndRemoveUntil()
context.replace()
context.replaceRouteBelow()
context.canPop()
context.maybePop()
context.popUntil()
context.pop()
context.removeRoute()
context.removeRouteBelow()
context.finalizeRoute()
Theme:
-
context.theme
-
context.textTheme
-
context.primaryTextTheme
-
context.bottomAppBarTheme
-
context.bottomSheetTheme
-
context.popupMenuTheme
-
context.buttonBarTheme
-
context.dividerTheme
-
context.chipTheme
-
context.sliderTheme
-
context.cardTheme
-
context.tabBarTheme
-
context.dialogTheme
-
context.themeBrightness
-
context.isDarkBrightness
-
context.isLightBrightness
-
context.backgroundColor
-
context.primaryColor
-
context.canvasColor
-
context.scaffoldBackgroundColor
-
context.dividerColor
-
context.disabledColor
-
context.appBarTheme
-
context.tooltipTheme
-
context.toggleButtonsTheme
-
context.navigationRailTheme
-
context.buttonTheme
-
context.iconTheme
-
context.listTileTheme
-
context.headline1TextStyle
-
context.headline2TextStyle
-
context.headline3TextStyle
-
context.headline4TextStyle
-
context.headline5TextStyle
-
context.headline6TextStyle
-
context.subtitle1TextStyle
-
context.bodyText1TextStyle
-
context.bodyText2TextStyle
-
context.captionTextStyle
-
context.buttonTextStyle
-
context.subtitle2TextStyle
-
context.overlineTextStyle
-
context.headline1PrimaryTextStyle
-
context.headline2PrimaryTextStyle
-
context.headline3PrimaryTextStyle
-
context.headline4PrimaryTextStyle
-
context.headline5PrimaryTextStyle
-
context.headline6PrimaryTextStyle
-
context.subtitle1PrimaryTextStyle
-
context.bodyText1PrimaryTextStyle
-
context.bodyText2PrimaryTextStyle
-
context.captionPrimaryTextStyle
-
context.buttonPrimaryTextStyle
-
context.subtitle2PrimaryTextStyle
-
context.overlinePrimaryTextStyle
-
context.defaultTextStyle
-
context.textDirection
-
context.displayLargeTextStyle
-
context.displayMediumTextStyle
-
context.displaySmallTextStyle
-
context.headlineLargeTextStyle
-
context.headlineMediumTextStyle
-
context.headlineSmallTextStyle
-
context.titleLargeTextStyle
-
context.titleMediumTextStyle
-
context.titleSmallTextStyle
-
context.labelLargeTextStyle
-
context.labelMediumTextStyle
-
context.labelSmallTextStyle
-
context.bodyLargeTextStyle
-
context.bodyMediumTextStyle
-
context.bodySmallTextStyle
-
context.colorScheme
-
context.colorSchemePrimary
-
context.colorSchemePrimaryVariant
-
context.colorSchemeSecondary
-
context.colorSchemeTertiary
-
context.colorSchemeSecondaryVariant
-
context.colorSchemePrimaryContainer
-
context.colorSchemeSecondaryContainer
-
context.colorSchemeTertiaryContainer
-
context.colorSchemeErrorContainer
-
context.colorSchemeInversePrimary
-
context.colorSchemeInverseSurface
-
context.colorSchemeSurface
-
context.colorSchemeSurfaceVariant
-
context.colorSchemeSurfaceTint
-
context.colorSchemeShadow
-
context.colorSchemeOutline
-
context.colorSchemeBackground
-
context.colorSchemeError
-
context.colorSchemeOnPrimary
-
context.colorSchemeOnSecondary
-
context.colorSchemeOnBackground
-
context.colorSchemeOnSurface
-
context.colorSchemeOnError
-
context.colorSchemeOnPrimaryContainer
-
context.colorSchemeOnSecondaryContainer
-
context.colorSchemeOnTertiaryContainer
-
context.colorSchemeOnErrorContainer
-
context.colorSchemeOnInverseSurface
-
context.colorSchemeOnSurfaceVariant
-
context.colorSchemeBrightness
-
context.platform
-
context.isAndroid
-
context.isIOS
-
context.isWindows
-
context.isMacOS
-
context.isFuchsia
-
context.isLinux
-
context.isMobile
-
context.isWeb
-
context.isDesktop
-
context.isMobile
-
context.isGoogle
-
context.isApple
Scaffold:
⚠️ Note: those must be called in the context of a `Scaffold` widget otherwise you might have errors.
context.scaffoldState
context.appBarMaxHeight
context.hasAppBar
context.hasDrawer
context.hasEndDrawer
context.hasFloatingActionButton
context.isDrawerOpen
context.isEndDrawerOpen
context.showSnackBar()
context.removeCurrentSnackBar()
context.hideCurrentSnackBar()
context.openDrawer()
context.openEndDrawer()
context.showBottomSheet()
Form:
⚠️ Note: those must be called in the context of a `Scaffold` widget otherwise you might have errors.
context.form.validate()
context.form.reset()
context.form.save()
FocusScope:
-
context.focusScope.hasFocus
-
context.focusScope.isFirstFocus
-
context.focusScope.canRequestFocus
-
context.focusScope.hasPrimaryFocus
-
context.focusScope.unfocus()
-
context.focusScope.nextFocus()
-
context.focusScope.requestFocus()
-
context.focusScope.previousFocus()
-
context.focusScope.setFirstFocus()
-
context.focusScope.consumeKeyboardToken()
-
context.closeKeyboard()
-
context.focusTraversalOrder
-
context.focusTraversalPolicy
Overlay:
context.overlay
context.addOverlay()
Localizations:
context.locale
context.countryCode
context.languageCode
context.materialLocalizations
context.widgetsLocalizations
ModalRoute:
context.modalRoute
context.routeSettings
context.args<String>()
Controller:
context.tabController
context.materialInkController
context.primaryScrollController
Others:
context.pageStorage
context.scrollBehavior
context.scrollable
context.actions
context.animatedList
context.defaultAssetBundle
context.sliverAnimatedList
context.tickingEnabled
🤝 Support
You liked this package? Then give it a ⭐️. If you want to help then:
- Fork this repository
- Send a Pull Request with new features
- Share this package
- Create issues if you find a bug or want to suggest a new extension
Credits
- build_context created by Pedro Massango
📝 License
Copyright © 2024 Kauê Martins.
This project is MIT licensed.