Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/flutter/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Flutter Android上的颤振检查屏幕是圆形的_Flutter_Flutter Plugin_Flutter Android - Fatal编程技术网

Flutter Android上的颤振检查屏幕是圆形的

Flutter Android上的颤振检查屏幕是圆形的,flutter,flutter-plugin,flutter-android,Flutter,Flutter Plugin,Flutter Android,是否有办法使用颤振检查设备屏幕是否为圆形 经过一些搜索后,我只找到了如何使用本机代码执行此操作: 实际上,我只需要安卓系统就可以使用它,但我还没有找到如何使用颤振来实现它。我想用这些信息来稍微改变一下应用程序的布局。您必须使用 在configureflatterengine()方法中,创建了一个MethodChannel,它调用setMethodCallHandler()。然后检查实际方法,并调用本机Android代码检查屏幕是否为圆形 下面是一些代码来演示它 在MainActivity.kt中

是否有办法使用颤振检查设备屏幕是否为圆形

经过一些搜索后,我只找到了如何使用本机代码执行此操作:

实际上,我只需要安卓系统就可以使用它,但我还没有找到如何使用颤振来实现它。我想用这些信息来稍微改变一下应用程序的布局。

您必须使用

configureflatterengine()
方法中,创建了一个MethodChannel,它调用
setMethodCallHandler()
。然后检查实际方法,并调用本机Android代码检查屏幕是否为圆形

下面是一些代码来演示它

MainActivity.kt
中,您应该具有以下内容:

打包您的.package.name
导入android.content.res.Configuration
导入androidx.annotation.NonNull
导入io.flatter.embedding.android.flatterActivity
导入io.flatter.embedding.engine.flatterengine
导入io.flatter.plugin.common.MethodChannel
类MainActivity:activity(){
private val CHANNEL=“leonardosilva.com/screen roundness”
覆盖fun配置颤振引擎(@NonNull颤振引擎:颤振引擎){
超级配置颤振引擎(颤振引擎)
MethodChannel(flatterEngine.dartExecutor.binaryMessenger,CHANNEL).setMethodCallHandler{call,
结果->
if(call.method==“getScreenRoundness”){
val config:Configuration=resources.Configuration
if(android.os.Build.VERSION.SDK\u INT>=android.os.Build.VERSION\u code.M){
result.success(config.isScreenRound)
}否则{
result.notImplemented()
}
}否则{
result.notImplemented()
}
}
}
}
在flatter代码中,需要一个变量来保存对平台频道的引用,因此在
有状态小部件
状态
类中,可以有以下内容:

静态常量平台=
const MethodChannel('leonardosilva.com/screen roundness');
然后您可以有一个类似下面的方法,在本机端调用该方法:

Future\u checkIfScreenIsRounded()异步{
试一试{
最终bool结果=等待平台.invokeMethod('getScreenRoundness');
设置状态(){
_isScreenRound=结果;
});
}平台上异常捕获(e){
打印('Error$e');
}
}
下面是一个示例,您可以粘贴到
main.dart
并运行:

导入“包装:颤振/材料.省道”;
导入“包:flifter/services.dart”;
void main(){
runApp(MyApp());
}
类MyApp扩展了无状态小部件{
@凌驾
小部件构建(构建上下文){
返回材料PP(
标题:“颤振演示”,
主题:主题数据(
主样本:颜色。蓝色,
视觉密度:视觉密度。自适应平台密度,
),
主页:MyHomePage(标题:“颤振演示主页”),
);
}
}
类MyHomePage扩展StatefulWidget{
MyHomePage({Key,this.title}):超级(Key:Key);
最后的字符串标题;
@凌驾
_MyHomePageState createState()=>\u MyHomePageState();
}
类_MyHomePageState扩展状态{
静态常数平台=
const MethodChannel('leonardosilva.com/screen roundness');
布勒-伊斯克里恩鲁德;
bool_卸载;
@凌驾
void initState(){
super.initState();
_isLoading=false;
}
Future\u checkIfScreenIsRounded()异步{
试一试{
最终bool结果=等待平台.invokeMethod('getScreenRoundness');
打印(结果);
设置状态(){
_isScreenRound=结果;
});
}平台上异常捕获(e){
打印('Error$e');
}
}
@凌驾
小部件构建(构建上下文){
返回脚手架(
appBar:appBar(
标题:文本(widget.title),
),
正文:中(
子项:_正在加载
?循环压缩机指示器()
:文本(
_isScreenRound==null
?按下按钮检查屏幕是否为圆形
:_isScreenRound
“屏幕是圆的”
:“屏幕不圆”,
),
),
浮动操作按钮:浮动操作按钮(
按下按钮:\检查屏幕是否已关闭,
工具提示:“检查屏幕是否为圆形”,
子:图标(Icons.add),
),
);
}
}