我想将一张 gif 放入我的应用程序中。我知道如何插入图像资源,但是当我尝试添加 gif 时,它变成了静态图像。
DrawImage(image = +imageResource(R.drawable.gif))
Run Code Online (Sandbox Code Playgroud)
有没有人尝试过在 Jetpack Compose 中添加 gif,因为很难在网上找到如何添加 gif 文档?
应用:任务提醒。用户创建一个任务并安排该任务到期的时间。
这个包flutter_local_notification允许我在用户创建此任务时安排未来的通知。如果我在任务到期时安排一个通知,那很好。
但是,如果用户忘记完成该任务并且该任务到期的日期已经过去(原始通知已经过去)。我希望应用程序每天一次继续通知用户他们尚未完成此任务,直到他们打开应用程序取消通知/将任务标记为完成。
我敢肯定其他人一定已经创建了这样的东西,但我正在努力在网上找到明确的解决方案,所以我想我会在这里问,看看人们对什么是最佳实践的意见。
我能想到的两种解决方案:
每天运行一次的后台任务,以检查当天哪些任务到期和逾期,然后安排当天晚些时候的某个时间点的通知。
系列活动
在“星期一”到期的示例任务
而不是每天运行后台任务。对于这个示例任务,我想我可以在星期一安排通知,同时还无限期地安排每天(星期二,星期三,星期四......)之后的每天重复通知。然后,如果用户打开应用程序并完成任务,这些重复通知将被取消。如果没有,用户每天都会收到通知,直到他们通知为止。
我认为这种方法可行,但我想避免在未来安排这么多通知,而只安排“今天”通知。因为这个应用程序可能有很多由用户创建的任务。
我的 flutter 应用程序目前仅在Android上运行,但我不想排除iOS。所以理想的方法是跨平台工作。
所有数据都存储在本地,因此我无法让后端完成数据检查和发送推送通知。
关于这个问题的解决方案的想法?
我已经在我的 flutter 应用程序中设置了 Google Analytics。这一切似乎都按标准工作,数据通过并显示在分析控制台屏幕上,向用户显示、事件计数之类的事情。
我看到默认事件是:user_engagement、screen_view、session_start、first_open、app_remove、app_clear_data。
这些都有很好的事件计数数据。我想在 flutter 应用程序中设置自己的自定义事件。我已经尝试过这个...
_sendAnalyticsEvent() async {
FirebaseAnalytics analytics = FirebaseAnalytics();
await analytics.logEvent(
name: "save_plant",
parameters: <String, dynamic>{
'plant_name': currentPlant.name,
'plant_species': currentPlant.species,
'plant_group': currentPlant.group,
'new_plant': widget.newPlant
},
);
}
Run Code Online (Sandbox Code Playgroud)
......但这些事件似乎没有任何进展。我在使用 flutter 应用程序执行自定义事件时是否遗漏了一些东西?我在 android 应用程序目录中正确拥有 google-services.json 文件。
我正在使用 Flutter 创建一个新应用程序,并希望在初始启动屏幕上添加自定义图像。
图像出现在初始屏幕上,但在大约半秒钟内它似乎被拉伸,看起来不太好。
我一直在寻找,但一直在努力寻找有同样问题的人。
有任何想法吗?
我曾尝试使用 mipmap 提供可变大小的图像,但产生相同的结果。
launch_background.xml
<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
<item android:drawable="@color/green" />
<item>
<bitmap
android:gravity="center_horizontal"
android:src="@drawable/ic_logo"
android:tileMode="disabled"/>
</item>
</layer-list>
Run Code Online (Sandbox Code Playgroud)
样式文件
<?xml version="1.0" encoding="utf-8"?>
<resources>
<style name="LaunchTheme" parent="@android:style/Theme.Black.NoTitleBar">
<item name="android:windowBackground">@drawable/launch_background</item>
<item name="android:windowFullscreen">false</item>
</style>
<color name="green">#b7dd05</color>
</resources>
Run Code Online (Sandbox Code Playgroud)
AndroidManifest.xml
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example.flutter_app">
<!-- io.flutter.app.FlutterApplication is an android.app.Application that
calls FlutterMain.startInitialization(this); in its onCreate method.
In most cases you can leave this as-is, but you if you want to provide
additional functionality it is fine to subclass or …Run Code Online (Sandbox Code Playgroud) 我对如何完成这项任务有点不确定,希望得到一些澄清。
APP:它提醒人们给植物浇水,用户可以指定他们希望这样做的频率。
我面临的问题是如何向用户发送本地通知。而不是为他们有预定时间关闭的每个新工厂设置单独的通知。我希望我可以指定一天中的某个时间(比如早上 8:00),我的应用程序会在其中运行我所有的植物并检查今天是否需要浇水。如果他们这样做了,它会通过本地通知告诉用户,例如“今天你有 5 株植物要浇水”,当他们点击它时,他们会进入应用程序,向他们显示它们是什么植物。
现在我仍然是 Android/Flutter 开发的新手,只是有点不确定这方面的最佳实践是什么?希望我说的够清楚,很高兴回答任何进一步的问题。在此先感谢您的帮助。
我正在尝试在我的 Jetpack Compose 项目中设置 Android Room。但是,当尝试添加...
kapt "androidx.room:room-compiler:2.2.3"
Run Code Online (Sandbox Code Playgroud)
...到应用程序 build.gradle 依赖项。我的构建失败并出现错误...
e: java.lang.NoSuchMethodError: org.jetbrains.kotlin.codegen.state.GenerationState$Builder.isIrBackend(Z)Lorg/jetbrains/kotlin/codegen/state/GenerationState$Builder;
Run Code Online (Sandbox Code Playgroud)
关于为什么会这样的任何见解?我们可以将 Android Room 与 Jetpack Compose 一起使用吗?
android kotlin android-room android-jetpack android-jetpack-compose
我有一个基本的应用程序,包含抽屉布局。抽屉中的每个选项都会打开一个新的片段页面供用户查看。这是抽屉布局代码。
<androidx.drawerlayout.widget.DrawerLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/drawer_layout"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:fitsSystemWindows="true"
tools:openDrawer="start">
<include
layout="@layout/app_bar_main"
android:layout_width="match_parent"
android:layout_height="match_parent" />
<com.google.android.material.navigation.NavigationView
android:id="@+id/nav_view"
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:layout_gravity="start"
android:fitsSystemWindows="true"
app:headerLayout="@layout/nav_header_main"
app:menu="@menu/activity_main_drawer" />
</androidx.drawerlayout.widget.DrawerLayout>
Run Code Online (Sandbox Code Playgroud)
这是app_bar_main.xml 代码。
<androidx.coordinatorlayout.widget.CoordinatorLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".DashBoardActivity">
<com.google.android.material.appbar.AppBarLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:theme="@style/AppTheme.AppBarOverlay">
<androidx.appcompat.widget.Toolbar
android:id="@+id/toolbar"
android:layout_width="match_parent"
android:layout_height="?attr/actionBarSize"
android:background="?attr/colorPrimary"
app:popupTheme="@style/AppTheme.PopupOverlay" />
</com.google.android.material.appbar.AppBarLayout>
<include layout="@layout/content_main" />
</androidx.coordinatorlayout.widget.CoordinatorLayout>
Run Code Online (Sandbox Code Playgroud)
这是 content_main.xml。还有主要活动 DashBoardActivity.kt
class DashBoardActivity : AppCompatActivity() {
private lateinit var appBarConfiguration: AppBarConfiguration
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_dashboard)
val toolbar: Toolbar = findViewById(R.id.toolbar)
setSupportActionBar(toolbar)
val drawerLayout: DrawerLayout = …Run Code Online (Sandbox Code Playgroud)