我正在尝试编写一个Riverpod提供程序,它将返回屏幕的缩放因子,这样我就可以相应地调整我的所有元素的大小。
final scale = ref.watch(scaleProvider);
return LinearPercentIndicator(
animation: true,
lineHeight: 15 * scale,
...
);
不幸的是,对于我天真的实现,MediaQuery需要一个构建上下文,这是我第一次创建全局scaleProvider时所没有的。
final scaleProvider = Provider<double>((ref) {
final availableHeight = MediaQuery.of(context).size.height -
AppBar().preferredSize.height -
MediaQuery.of(context).padding.top -
MediaQuery.of(context).padding.bottom;
return availableHeight / 600.0;
});
我做什么好?供应商是否打算以这种方式使用?我如何使缩放因子在我的所有控件想要的时候都可用?
发布于 2022-12-03 05:48:44
如果你在media_query省查的话。size
以window.physical.size的形式在构造函数中获取其数据,因此:
import 'package:flutter/material.dart';
import 'dart:ui' as ui;
import 'package:flutter_riverpod/flutter_riverpod.dart';
final scaleProvider = Provider<double>((ref) {
final window = ui.window;
final availableHeight = window.physicalSize.height -
AppBar().preferredSize.height -
window.padding.top -
window.padding.bottom;
return availableHeight / 600.0;
});
https://stackoverflow.com/questions/74664232
复制相似问题