bounty将在2天后过期。回答此问题可获得+50的声誉奖励。Malay Agrawal正在寻找来自声誉良好来源的答案。
我有一个Flutter应用程序,现在我想做一个网页版,当我试图运行它时,网页应用程序占用了整个桌面屏幕,这扰乱了设计。这是我使用的代码
MediaQuery(
data: new MediaQueryData(),
child: MaterialApp(
home: ScreenUtilInit(
splitScreenMode: true,
designSize: const Size(390, 844),
minTextAdapt: true,
builder: (context, child) {
return MainHomePageN();
})))
我希望网页视图的高度和宽度与移动的屏幕的高度和宽度相似,其余屏幕为黑色。那么,有没有一种方法可以通过在单个位置添加约束来实现这一点呢?
6条答案
按热度按时间2vuwiymt1#
我想应该是这样的:
myss37ts2#
一般来说,只需将整个应用程序 Package 在
Center
中即可,例如但是我不熟悉
ScreenUtilInit
,可能是它的内部工作原理与这个解决方案不太兼容。to94eoyn3#
这将通过调整宽度在web中显示移动的设计:
验证码:
这样使用它:
qacovj5a4#
我想这就是你想实现的,但没有设计/图片/图像是很难知道的。
所以,如果你在web上运行,不要使用ScreenUtilInit(我以前没有使用过这个包),这样你就可以设置你想要的宽度,并用黑色填充剩余的空间。
7kjnsjlb5#
你的方法的问题是你只设置了MainHomePageN的大小。当你把一个新的屏幕推到堆栈上的时候,它就不再有这些大小了。(我不熟悉ScreenUtilInit,所以我可能是错的)
一个非常过度设计的解决方案是像这样使用auto_route:
然后在路由文件中,你会有这样的东西:
请检查包的文档,因为我还没有测试过这个代码。
另一种方法是简单地创建一个具有所需大小的小部件,并将其放置在每个脚手架的顶部。(这将需要更多的重构)
svujldwt6#
我认为有很多方法可以实现它。但是,为了只调整Web代码并更改最小的原始代码,让我们尝试使用LayoutBuilder。我们在这里没有关于您的原始代码的线索,但在屏幕的构造函数中添加一个变量。它们将是双倍宽度和双倍高度。技巧将是:如果我们在web上,我们将有一个Layoutbuilder传递自定义宽度和自定义高度。所以在屏幕的initState中,检查:
有了这个,我们已经设置了屏幕大小。现在我们只需要在每一边插入黑色功能。所以,在你的主(或在根点)添加一个LayoutBuilder。我会给予你一个示例。让我们说你会把它放在你的主.dart文件: