小编Arr*_*row的帖子

颤动| 使用 Chrome DevTools 检查 Android SQLite 数据库 | VS代码

AndroidStudio 具有数据库检查器,这是查看数据库内容的一个很棒且简单的工具。在 VSCode 上,我还没有找到一个简单的平均解决方案来工作!我正在使用SQFlite

该工具不起作用且未维护: https://pub.dev/packages/flutter_stetho

对于我的简单任务来说,这个有很多不必要的步骤和工具: https: //pub.dev/packages/appspector

有没有办法使用 ChromeDevTool 或任何其他方式检查 SQLite 数据库?

visual-studio-code flutter sqflite

9
推荐指数
0
解决办法
2223
查看次数

从 Ktor 应用程序发送电子邮件

我目前正在使用 Ktor Netty 引擎创建我的应用程序

我在文档中搜索了当用户向我的服务器发送请求时处理发送电子邮件的任何功能,但什么也没找到。

post("/api/v1/auth") {
    // TODO send email when request is sent!
}
Run Code Online (Sandbox Code Playgroud)

ktor

9
推荐指数
1
解决办法
2996
查看次数

BottomSheetFragment 是否需要 ViewModel?

使用Bottom Sheets和Dialog时如何执行操作:

  1. 将 SharedViewModel 与创建此底部工作表的片段一起使用?
  2. 根本不使用 ViewModel?
  3. 为 BottomSheet 创建一个单独的 ViewModel?
  4. 任何其他最佳实践方法

android mvvm viewmodel android-fragments

7
推荐指数
1
解决办法
1145
查看次数

RxJava 和 Retrofit 的单元测试

我有这个调用 Rest API 并将结果作为 Observable (Single) 返回的方法:

fun resetPassword(email: String): Single<ResetPassword> {
    return Single.create { emitter ->

        val subscription = mApiInterfacePanda.resetPassword(email)
            .observeOn(AndroidSchedulers.mainThread())
            .subscribeOn(Schedulers.io())
            .subscribe({ resetPasswordResponse ->
                when(resetPasswordResponse.code()) {
                    200 ->  {
                        resetPasswordResponse?.body()?.let { resetPassword ->
                            emitter.onSuccess(resetPassword)
                        }
                    }
                    else -> emitter.onError(Exception("Server Error"))
                }
            }, { throwable ->
                    emitter.onError(throwable)
            })

        mCompositeDisposable.add(subscription)

    }
}
Run Code Online (Sandbox Code Playgroud)

单元测试:

@Test
fun resetPassword_200() {
    val response = Response.success(200, sMockResetPasswordResponse)
    Mockito.`when`(mApiInterfacePanda.resetPassword(Mockito.anyString()))
        .thenReturn(Single.just(response))

    mTokenRepository.resetPassword(MOCK_EMAIL)

    val observer = mApiInterfacePanda.resetPassword(MOCK_EMAIL)
    val testObserver = TestObserver.create<Response<ResetPassword>>()
    observer.subscribe(testObserver)

    testObserver.assertSubscribed()
    testObserver.awaitCount(1)
    testObserver.assertComplete()
    testObserver.assertResult(response)
}
Run Code Online (Sandbox Code Playgroud)

我的问题是只有这一行被覆盖,其他行不会运行,这对我的总测试覆盖率有很大影响: …

android unit-testing kotlin retrofit2 rx-java2

7
推荐指数
1
解决办法
298
查看次数

Jetpack Compose:未找到 ViewTreeLifecycleOwner

在我的片段中使用 Compose 时出现此错误,这在 XML 的情况下工作正常

ViewTreeLifecycleOwner not found from androidx.fragment.app.FragmentContainerView

我使用的是单一活动方法而不使用 Jetpack Navigation 组件

活动

override fun onCreate(savedInstanceState: Bundle?) {
  super.onCreate(savedInstanceState)
  setContentView(R.layout.activity_nav)
  supportFragmentManager.commit {
    setReorderingAllowed(true)
    add<InboxFragment>(R.id.nav_fragmentContainerView_appNav)
  }
}
Run Code Online (Sandbox Code Playgroud)
<androidx.fragment.app.FragmentContainerView
  xmlns:android="http://schemas.android.com/apk/res/android"
  android:id="@+id/nav_fragmentContainerView_appNav"
  android:layout_width="match_parent"
  android:layout_height="match_parent"/>
Run Code Online (Sandbox Code Playgroud)

片段

override fun onCreateView(
        inflater: LayoutInflater,
        container: ViewGroup?,
        savedInstanceState: Bundle?
): View {
  return ComposeView(requireContext()).apply {
    setContent {
      Text(text = "HELLO FRIEND!")
    }
  }
}
Run Code Online (Sandbox Code Playgroud)

依赖项

def fragment_version = "1.3.3"
implementation("androidx.fragment:fragment-ktx:$fragment_version")

def compose_version = "1.0.0-beta06"
implementation "androidx.compose.ui:ui:$compose_version"
implementation "androidx.compose.ui:ui-tooling:$compose_version"
implementation "androidx.compose.material:material:$compose_version"
implementation …
Run Code Online (Sandbox Code Playgroud)

android android-jetpack-compose

3
推荐指数
2
解决办法
371
查看次数

如何更改 ViewModel 内的 MutableLiveData 值

我需要更改 ViewModel 中 MutableLiveData 的值,但我无法做到这一点,因为该值等于 null,我认为需要建立一个观察者在其中更改它,但我不知道该怎么做,并且这是否是一个好主意。

录音机列表视图模型

class AudioRecordersListViewModel() : ViewModel() {
    var audioRecordsLiveData: MutableLiveData<MutableList<AudioRecordUI>> = MutableLiveData();
    private var audioRecordDao: AudioRecordDao? = null

    @Inject
    constructor(audioRecordDao: AudioRecordDao) : this() {
        this.audioRecordDao = audioRecordDao
        viewModelScope.launch {
        val liveDataItems = audioRecordDao
                .getAll().value!!.map { item -> AudioRecordUI(item) }
                .toMutableList()

            if (liveDataItems.size > 0) {
                liveDataItems[0].isActive = true
            }

            audioRecordsLiveData.postValue(liveDataItems)
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

录音道

@Dao
interface AudioRecordDao {
    @Query("SELECT * FROM AudioRecordEmpty")
    fun getAll(): LiveData<MutableList<AudioRecordEmpty>>
}
Run Code Online (Sandbox Code Playgroud)

android viewmodel kotlin android-livedata

1
推荐指数
1
解决办法
3109
查看次数

Jetpack Compose 脚手架 + 模态底片

我正在尝试使用 Compose 设计一个布局,其中包括:

  1. 顶部应用栏
  2. 正文(内容)
  3. 底部应用栏
  4. 单击时表示菜单的底部工作表(模态底部工作表)

-------TopAppBar-------

------主要内容------

------底部应用栏-----

----ModalBottomSheet---

Compose 提供了 3 个组件:

  1. 脚手架
  2. 底片脚手架
  3. 模态底部图纸布局

脚手架没有底片属性

BottomSheetScaffold没有 BottomAppBar 属性

ModalBottomSheetLayout只有 content 和 sheetContent

Which of these components should I combine and in what **structure** to achieve what I want?

Scaffold(
  topBar = { TopBar() },
  content = { innerPadding -> Body(innerPadding) },
  bottomAppbar = { BottomAppBar() }
)
ModalBottomSheetLayout(
  sheetState = rememberModalBottomSheetState(
    initialValue = ModalBottomSheetValue.Hidden
  ),
  sheetContent = { SheetContent() },
)
BottomSheetScaffold(
  scaffoldState …
Run Code Online (Sandbox Code Playgroud)

android android-jetpack-compose

1
推荐指数
1
解决办法
1539
查看次数