AndroidStudio 具有数据库检查器,这是查看数据库内容的一个很棒且简单的工具。在 VSCode 上,我还没有找到一个简单的平均解决方案来工作!我正在使用SQFlite包
该工具不起作用且未维护: https://pub.dev/packages/flutter_stetho
对于我的简单任务来说,这个有很多不必要的步骤和工具: https: //pub.dev/packages/appspector
有没有办法使用 ChromeDevTool 或任何其他方式检查 SQLite 数据库?
我目前正在使用 Ktor Netty 引擎创建我的应用程序
我在文档中搜索了当用户向我的服务器发送请求时处理发送电子邮件的任何功能,但什么也没找到。
post("/api/v1/auth") {
// TODO send email when request is sent!
}
Run Code Online (Sandbox Code Playgroud) 使用Bottom Sheets和Dialog时如何执行操作:
我有这个调用 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)
我的问题是只有这一行被覆盖,其他行不会运行,这对我的总测试覆盖率有很大影响: …
在我的片段中使用 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) 我需要更改 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) 我正在尝试使用 Compose 设计一个布局,其中包括:
-------TopAppBar-------
------主要内容------
------底部应用栏-----
----ModalBottomSheet---
Compose 提供了 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)