首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Preview中不支持具有非默认参数的可组合函数,除非它们被@PreviewParameter注释

Preview中不支持具有非默认参数的可组合函数,除非它们被@PreviewParameter注释
EN

Stack Overflow用户
提问于 2022-02-18 05:19:58
回答 2查看 2.9K关注 0票数 6

我有一个带有lambda的Composable函数,用于获取按钮单击操作。我想预览一下这个Composable函数。但是,可组合函数在添加@Preview注释后,在@Composable上添加了这样的lambda错误。

Composable functions with non-default parameters are not supported in Preview unless they are annotated with @PreviewParameter.

可组合函数看起来像

代码语言:javascript
运行
AI代码解释
复制
@Composable
fun MyView(onViewButtonClick: () -> Unit) {
Button(
            enabled = isEnabled, colors = ButtonDefaults.buttonColors(
                backgroundColor = greenColor
            ),
            shape = Shapes.large, onClick = (onViewButtonClick),
            modifier = Modifier
                .fillMaxWidth()
                .padding(15.dp, 40.dp, 15.dp, 15.dp)
        ) {
            Text(
                text = stringResource(id = R.string.send_otp),
                color = Color.White,
                fontSize = 20.sp
            )
        }
 }

它的应用程序类似于

代码语言:javascript
运行
AI代码解释
复制
MyView(onViewButtonClick = {
                Log.d("ViewButtonClick","ViewButtonClick")
            }). 

如何使用Lambda查看这个可组合函数的预览?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2022-02-18 05:53:43

要么为您的可组合提供默认的lambda,要么在预览中实现一个空lambda。

代码语言:javascript
运行
AI代码解释
复制
@Composable
fun MyView(onViewButtonClick: () -> Unit = {}) {
Button(
            enabled = isEnabled, colors = ButtonDefaults.buttonColors(
                backgroundColor = greenColor
            ),
            shape = Shapes.large, onClick = (onViewButtonClick),
            modifier = Modifier
                .fillMaxWidth()
                .padding(15.dp, 40.dp, 15.dp, 15.dp)
        ) {
            Text(
                text = stringResource(id = R.string.send_otp),
                color = Color.White,
                fontSize = 20.sp
            )
        }
 }

@Preview
@Composable
fun MyViewPreview() {
    MyView()
}

代码语言:javascript
运行
AI代码解释
复制
@Composable
fun MyView(onViewButtonClick: () -> Unit) {
Button(
            enabled = isEnabled, colors = ButtonDefaults.buttonColors(
                backgroundColor = greenColor
            ),
            shape = Shapes.large, onClick = (onViewButtonClick),
            modifier = Modifier
                .fillMaxWidth()
                .padding(15.dp, 40.dp, 15.dp, 15.dp)
        ) {
            Text(
                text = stringResource(id = R.string.send_otp),
                color = Color.White,
                fontSize = 20.sp
            )
        }
 }

@Preview
@Composable
fun MyViewPreview() {
    MyView(onViewButtonClick = {})
}
票数 7
EN

Stack Overflow用户

发布于 2022-06-13 04:00:29

如此处所定义的问题,不支持具有非默认参数的可组合函数。这意味着应该在Composable函数中定义默认值,或者如果使用自定义模型,则使用PreviewParameter.

代码语言:javascript
运行
AI代码解释
复制
@Preview(showBackground = true)
@Composable
fun Greeting(name: String = "Bharat") {
Surface(modifier = Modifier
    .fillMaxHeight()
    .fillMaxWidth()) {
    Text(text = "Hello $name!")
  }
}


@Preview   
@Composable
fun UserProfilePreview(
@PreviewParameter(UserPreviewParameterProvider::class) user: User) 
    {
       UserProfile(user)
    }
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/71174154

复制
相关文章
python中函数的默认参数问题
第三次调用的时候,很容易误以为会L1输出[10],L3输出[20],但是其实都是[10, 20]。这里其实是因为,函数test的x列表参数在没有被指定的时候,这个x列表的值随后就会被利用。其实带有默认参数的会在函数在被定义的时候就被计算,而不是在调用的时候被计算的。L1与L3是在同一个默认列表上操作的,但是L2指定了参数,因此是在另外列表上进行操作的。
生信编程日常
2020/05/26
2.1K0
函数默认参数
注意: 如果某个位置已经有了默认参数,从这个位置往后,从左到右都要有默认值 #include<iostream> using namespace std; void test01(int a, int b = 10,int c = 10) { cout << a + b + c << endl; } void test02(int a , int b,int c=10) { cout << a + b << endl; } int main() { test01(10); test02(10,
大忽悠爱学习
2021/03/02
9550
函数默认参数
JS函数默认参数
写习惯了php的函数默认参数 function add($a = 12, $b = 20) { return $a + $b; } JS默认参数可以这样玩 function add(a, b) {
苦咖啡
2018/05/08
6.5K0
【Kotlin】函数 ① ( 函数头声明 | 函数参数 | 默认参数值 | 具名参数 )
默认参数值 : Kotlin 语言 中的 函数参数 , 可以 在定义时 指定参数默认值 ;
韩曙亮
2023/03/30
2.9K0
【Kotlin】函数 ① ( 函数头声明 | 函数参数 | 默认参数值 | 具名参数 )
golang中函数如何设置参数默认值
这个问题相当麻烦,根据golang-nuts/google groups中的这篇文章,golang现在与将来都不会支持参数默认值。Go始终在使得自己变得尽可能的简单,而增加这种额外的支持会使parser变得更复杂。
千灵域
2022/06/17
14.9K0
【C++】函数参数扩展 ( 默认参数 | 默认参数定义规则 | 默认参数定义在参数列表末尾 )
" 默认参数 " 概念 : C++ 语言 中的 函数 , 可以在 声明 函数时 , 为 函数参数 定义一个默认值 ;
韩曙亮
2023/10/15
1K0
【C++】函数参数扩展 ( 默认参数 | 默认参数定义规则 | 默认参数定义在参数列表末尾 )
EasyC++36,函数的默认参数
C++当中的支持默认参数,如果你学过Python,那么想必对此不会陌生。C++中的默认参数的用法和Python基本一致。
TechFlow-承志
2022/08/26
3630
EasyC++36,函数的默认参数
ES6 函数参数(默认参数、结构)
重来没有系统的学过es6,感觉语法和swift 、java、python等语言差不多,今天给我上了一课。 缘起 ---- 今天看了一个函数,愣是看的有点蒙。 clone ({ zindex = this.commonStyle.zindex + 1 } = {}) { } 最后终于弄明白了,写点总结 ES6函数参数 ---- 1、默认值 这个没什么说的,就是传入undefine 的时候使用默认值,注意null不行。 function esFn(name = 'zzy') { console.lo
星宇大前端
2021/04/30
8580
C++内联函数,默认参数,占位参数
之前讲过宏定义会经过预处理器进行文本替换,缺点就在于没有类型检查,没有任何编译过程,编译器根本不知道类型是什么.
诺谦
2019/05/24
1.4K0
Python中的默认参数详解
文章的主题 不要使用可变对象作为函数的默认参数例如 list,dict,因为def是一个可执行语句,只有def执行的时候才会计算默认默认参数的值,所以使用默认参数会造成函数执行的时候一直在使用同一个对象,引起bug。 基本原理 在 Python 源码中,我们使用def来定义函数或者方法。在其他语言中,类似的东西往往只是一一个语法声明关键字,但def却是一个可执行的指令。Python代码执行的时候先会使用 compile 将其编译成 PyCodeObject. PyCodeObject 本质上依然是一
py3study
2020/01/12
1.5K0
C语言 深度探究具有不定参数的函数
C语言虽然不支持泛型编程(至少C98是这样的),但是C语言却支持不定参数的函数,这里我深究一下里面的原理,并且学会它的使用,自己简单实现一个简单的printf函数。 注:这里使用的IDE为 vs2022
苏州程序大白
2022/06/12
5840
C语言 深度探究具有不定参数的函数
Python学习:定义函数的默认参数和可变参数
例如Python自带的 int() 函数,其实就有两个参数,我们既可以传一个参数,又可以传两个参数:
Python学习者
2022/10/15
1.9K0
深入 JavaScript 中的默认参数!
最近开源了一个 Vue 组件,还不够完善,欢迎大家来一起完善它,也希望大家能给个 star 支持一下,谢谢各位了。
前端小智@大迁世界
2021/03/02
1.7K0
深入 JavaScript 中的默认参数!
Pycharm自动添加文件头注释和函数注释参数
Pycharm应该是学python必用的编辑器了,关于它的使用之前已经写过几篇文章,今天再给大家继续介绍两个pycharm的小技巧,希望对大家有用。
吾非同
2020/10/23
10.1K0
Pycharm自动添加文件头注释和函数注释参数
【Python 第42课】 函数的默认参数
今天分享一点小技巧。之前我们用过函数,比如: def hello(name): print 'hello ' + name 然后我们去调用这个函数: hello('world') 程序就会输出 hello world 如果很多时候,我们都是用world来调用这个函数,少数情况才会去改参数。那么,我们就可以给这个函数一个默认参数: def hello(name = 'world'): print 'hello ' + name 当你没有提供参数值时,这个参数就会使用默认值;如果你提供了,就用你
Crossin先生
2018/04/16
9070
【Python 第42课】 函数的默认参数
Python教程如何设置函数的默认参数
今天马哥教育要跟大家分享的文章是Python教程如何设置函数的默认参数?上一讲我们结束了用文件保存游戏的Python内容,这一讲我们来补充一个小技巧,关于设置函数默认参数的哦!Python入门新手和正在Python学习的小伙伴快来看一看吧,希望能够对大家有所帮助 !
小小科
2019/12/31
2K0
python 函数编程的位置参数、默认参数、关键字参数以及函数的递归
首先对于函数调用: !usr/bin/env python _*_ coding:utf-8 _*_ def AQA(INPUT): if INPUT=='hello world': #在输入正确的情况下,不想让其调用hello_again()函数, #法一: 可利用返回值(return)进行判断 #法二:可将函数放在else下执行 print('你好,世界') return 'right' else:
学到老
2018/03/19
1.3K0
python  函数编程的位置参数、默认参数、关键字参数以及函数的递归
python函数注释,参数后面加冒号:,
python的函数注释: def f(text:str,max_len:'int>0'=80) ->str: """这个是函数的帮助说明文档,help时会显示""" return True """ 函数声明中,text:str text 是参数 :冒号后面 str是参数的注释。 如果参数有默认值,还要给注释,如下写。 max_len:'int>0'=80 ->str 是函数返回值的注释。 这些注释信息都是函数的元信息,保存在f.__annotations__字典中、 需要注意,python
py3study
2020/01/14
5.1K0
python 函数编程的位置参数、默认参数、关键字参数以及函数的递归
** 注意关键参数是转化为dict(key对应value),位置参数是元组形式
学到老
2019/02/14
1.1K0
maven打包 错误: -source 1.3 中不支持注释
MVC项目打包报错: 错误: -source 1.3 中不支持注释 但是编译通过。 解决: 指定maven打包的jdk版本: <build> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-compiler-plugin</artifactId> <v
HaC
2020/12/30
5470

相似问题

如何使用@PreviewParameter注释?

29

如何预览具有非空类型参数的可组合参数?

36

python:具有非默认参数的defaultdict

10

函数默认参数被忽略

239

在JavaScript中,具有默认值的参数先于非默认参数。

211
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档