Incular logoIncular
API ReferenceEnvironment

MediaQuery

Window-local environment snapshot scope with viewport, scale, and safe-area data.

MediaQuery { data: RuntimeEnvironment, child: Widget } installs a normalized environment snapshot for its subtree. MediaQueryData is an alias for RuntimeEnvironment.

use incular::prelude::*;

fn main() {
    let environment = RuntimeEnvironment::default();
    println!("scale: {}", environment.scale_factor);
    let query = MediaQuery::new(environment.clone(), Text::new("Hi"));
    println!("viewport: {:?}", query.data().viewport);
    println!("owned viewport: {:?}", query.into_data().viewport);
    let app = Application::new(move |_cx| {
        MediaQuery::new(environment.clone(), Text::new("Hi")).into()
    })
    .expect("valid application");
    incular::run(app).expect("run application");
}

RuntimeEnvironment fields

FieldTypeMeaning
viewportSizeLogical viewport size
physical_width / physical_heightu32Native pixels
scale_factorf64Device pixel ratio
brightnessBrightness (Light default / Dark)Platform color preference
text_scalef32Accessibility text scaling
safe_insets / view_padding / view_insetsEdgeInsetsSystem areas
localesVec<Locale`>``Preferred locales
text_directionTextDirectionResolved direction
reduced_motion / high_contrastboolAccessibility flags
inputInputCapabilitiesDevice capabilities
window_focused / window_occludedboolWindow state

Methods: normalized(), primary_locale(), resolve_locale(&supported). Prefer BuildContext readers (cx.viewport(), cx.scale_factor(), cx.safe_insets(), …) inside builds — they subscribe finely; MediaQuery overrides the whole snapshot for a subtree (tests, previews).

Related: LayoutBuilder, Application.

On this page