在 Web 上导入与在本机上导入很容易
import '../wrappers/platform/platform_none.dart'
if (dart.library.io) '../wrappers/platform/platform_io.dart'
if (dart.library.js) '../wrappers/platform/platform_web.dart';
Run Code Online (Sandbox Code Playgroud)
如果我想根据我是在移动设备 (iOS/Android) 上还是在桌面设备 (Linux/MacOS/Windows) 上导入不同的包,该怎么办?
如果没有条件导入的方法,那么如何通过其他方式实现这一点呢?
我尝试的是一个更大的应用程序的一部分,但我在这里发布了理解我的问题的最低限度:
我想更改矩形的大小,该大小取决于 root.height 。
3个案例:
1)当我创建一个高度为“root.height/4”的矩形时,大小会随着我调整根窗口的大小而变化。目前为止没有问题
2)当我尝试将“root.height/4”分配给属性并在设置矩形大小时调用此属性时,出现以下错误:“TypeError:需要浮点数”。
Python 文件:
from kivy.app import App
from kivy.uix.widget import Widget
from kivy.graphics import Rectangle, Color
class BriqueApp(App):
def build(self):
return BriqueGUI()
class BriqueGUI(Widget):
pass
BriqueApp().run()
Run Code Online (Sandbox Code Playgroud)
Kv文件:
#:kivy 1.9.1
<BriqueGUI>:
h: root.height/4
color: (1,0,0,1)
canvas:
Color:
rgba: root.color
Rectangle:
size: (200, self.h)
pos: (0,0)
Run Code Online (Sandbox Code Playgroud)
3)当我尝试重新分配一个值时,例如“root.height/2”,当调用事件时(此处为on_touch_down):我的矩形的大小发生变化,但是当我调整窗口大小时,我的矩形不会调整大小用它。您可以在此处看到加载文件、单击主窗口并更改其大小的问题。
Python 文件:
from kivy.app import App
from kivy.uix.widget import Widget
from kivy.graphics import Rectangle, Color
class BriqueApp(App):
def build(self):
return BriqueGUI()
class BriqueGUI(Widget):
def on_touch_down(self, touch):
self.h = …
Run Code Online (Sandbox Code Playgroud)