我用这个方法来显示一个AlertDialog:
_onSubmit(message) {
if (message.isNotEmpty) {
showDialog(
context: context,
barrierDismissible: false,
builder: (BuildContext context) {
return AlertDialog(
title: Center(child: Text('Alert')),
content: Row(
mainAxisAlignment: MainAxisAlignment.center,
crossAxisAlignment: CrossAxisAlignment.center,
children : <Widget>[
Expanded(
child: Text(
message,
textAlign: TextAlign.center,
style: TextStyle(
color: Colors.red,
),
),
)
],
),
actions: <Widget>[
FlatButton(
child: Text('Cancel'),
onPressed: () {
Navigator.of(context).pop();
}),
FlatButton(
child: Text('Ok'),
onPressed: () {
_inputTextController.clear();
Navigator.of(context).pop();
})
],
);
},
);
}
}
Run Code Online (Sandbox Code Playgroud)
一切正常,但按钮右对齐,如下图所示:
我想要设置一些按钮的样式,例如一个按钮开始另一个.我搜索了文档,但只找到了如何使它们成为"堆叠全宽按钮".任何想法如何设置按钮的样式?
我试图在我的 Flutter 应用程序中强调一个容器。到目前为止,当我使用以下代码时,我实现了某种基础:
Container(
child: Row(
mainAxisAlignment: MainAxisAlignment.center,
children: <Widget>[
Expanded(
child: Padding(
padding: EdgeInsets.all(8.0),
child: Text(
'Underline my parent!',
maxLines: 2,
textAlign: TextAlign.center,
),
),
)
],
),
decoration: Border(bottom: BorderSide(color: Colors.grey)),
),
Run Code Online (Sandbox Code Playgroud)
但是现在我希望下划线不是从头到尾,我希望在开始和结束时都有空间。如果有一些更聪明的方式来给小部件加下划线,我也会很高兴看到它。
我正在使用 Jetpack Compose,并注意到预览未显示。我读过这样的文章,但我的问题似乎有不同的根本原因。即使我为 compose 函数中的所有参数添加了默认值,如下所示:
@OptIn(ExperimentalLifecycleComposeApi::class)
@Composable
@ExperimentalFoundationApi
@Preview
fun VolumeSettingsScreen(
speech: SpeechHelper = SpeechHelper(), // my class that converts text to speech
viewModel: VolumeSettingsViewModel = hiltViewModel(), // using Hilt to inject ViewModels
navController: NavHostController = rememberNavController() // Compose Navigation component
) {
MyAppheme {
Box(
...
)
}
}
Run Code Online (Sandbox Code Playgroud)
当我回滚一些更改时,我意识到无论它们是否注入了 Hilt,都不@Preview支持。viewModels
知道如何解决这个问题吗?
android kotlin android-jetpack-compose android-jetpack-compose-preview
我有一个具有不同类型的 ViewHolders 的 RecyclerView,它们具有不同的布局资源。有没有办法指定 tools:listItem 命名空间中的所有布局?如果我像这样指定所有 listItems 布局:
<androidx.recyclerview.widget.RecyclerView
......
tools:listitem="@layout/layout_1"
tools:listitem="@layout/layout_2"
tools:listitem="@layout/layout_3" />
Run Code Online (Sandbox Code Playgroud)
由于重复的项目,我收到了错误。我可以做这样的事情:
<androidx.recyclerview.widget.RecyclerView
......
tools:listitem0="@layout/layout_1"
tools:listitem1="@layout/layout_2"
tools:listitem2="@layout/layout_3" />
Run Code Online (Sandbox Code Playgroud)
不会出现错误,但打开布局的单击功能会丢失,因为命名空间中没有此类声明。使用tools:showIn时也是一样的。
我正在尝试在本地通知上使用自定义振动。阅读了一些内容后,我在通知通道中设置了自定义振动模式,如下所示:
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
val notificationChannel =
NotificationChannel(NotificationChannels.CHANNEL_ID, channelName, importance)
...
notificationChannel.enableVibration(true)
notificationChannel.vibrationPattern = vibrationPattern
notificationManager.createNotificationChannel(notificationChannel)
}
Run Code Online (Sandbox Code Playgroud)
但它只振动一次,并且只执行前四个索引。
例如,如果我的模式如下所示:
val vibrationPattern = longArrayOf(
0, 200, 500, 50,
0, 200, 500, 50,
0, 200, 500, 50,
0, 200, 500, 50,
0, 200, 500, 50,
0, 200, 500, 50)
Run Code Online (Sandbox Code Playgroud)
它仅在第一行振动并停止。振动等效于:
val vibrationPattern = longArrayOf(0, 200, 500, 50)
Run Code Online (Sandbox Code Playgroud)
我有一个想法,将模式设置为看起来像最后一个,并将系统设置为重复几次,但到目前为止我还没有找到如何做到这一点。
我很高兴在这里得到一些帮助。
我正在尝试Navigation使用单个活动和多个Composable屏幕来实现。
这是我的NavHost:
@Composable
@ExperimentalFoundationApi
fun MyNavHost(
modifier: Modifier = Modifier,
navController: NavHostController = rememberNavController(),
startDestination: String = HOME.route,
viewModelProvider: ViewModelProvider,
speech: SpeechHelper
) = NavHost(
modifier = modifier,
navController = navController,
startDestination = startDestination
) {
composable(route = HOME.route) {
with(viewModelProvider[HomeViewModel::class.java]) {
HomeScreen(
speech = speech,
viewModel = this,
modifier = Modifier.onKeyEvent { handleKeyEvent(it, this) }
) {
navController.navigateTo(it)
}
}
}
composable(route = Destination.VOLUME_SETTINGS.route) {
VolumeSettingsScreen(
viewModelProvider[VolumeSettingsViewModel::class.java]
) { navController.navigateUp() }
}
} …Run Code Online (Sandbox Code Playgroud) android infinite-loop android-jetpack-compose jetpack-compose-navigation compose-recomposition
我正在尝试使用复选框实现 ListView,但我收到一个错误,提示BoxConstraints强制无限宽度。这是我的代码:
body: ListView.builder(itemCount: _items.length,
itemBuilder: (BuildContext context, int index) {
bool _isLastClickedIndex = index == _lastClickedPosition;
return Container(
child: Card(
margin: EdgeInsets.all(8.0),
color: index % 2 == 0 ? Colors.grey : Colors.white,
child: Center(
child: Column(
children: <Widget>[
CheckboxListTile(
title: Text('Title Text'),
subtitle: Text('Subtitle text'),
controlAffinity: ListTileControlAffinity.leading,
value: _isLastClickedIndex,
onChanged: (bool value) {
_onCheckBoxChanged(value, index);
},
secondary: Icon(Icons.people),
),
],
),
),
),
);
}),
Run Code Online (Sandbox Code Playgroud)
这是错误:
I/flutter (27333): The following assertion was thrown during performLayout():
I/flutter (27333): …Run Code Online (Sandbox Code Playgroud) 当我尝试使用 Kotlin 和 Dagger 2 时遇到这个问题。
\n\n“如果没有@Provides-或@Produces-注释的方法,则无法提供接口。\xe2\x80\x9d
\n\n这是我的模块类:
\n\n@Module\nclass MenuActivityModule(@NonNull private val menuActivity: MenuActivity) {\n\n @Provides\n @MenuActivityScope\n fun provideGameScreenDimensions(application: Application) =\n GameScreenDimension(application.resources)\n\n @Provides\n @MenuActivityScope\n fun provideAudio() =\n AndroidAudio(menuActivity)\n\n @Provides\n @MenuActivityScope\n fun providePowerManager() =\n menuActivity.getSystemService(Context.POWER_SERVICE) as PowerManager\n\n @Provides\n @MenuActivityScope\n fun provideWakeLock(@NonNull powerManager: PowerManager) =\n powerManager.newWakeLock(PowerManager.PARTIAL_WAKE_LOCK, Preferences.APPLICATION_TAG)\n}\n\nThis is a part of my Activity class, where I inject some variables with Dagger:\n\nclass MenuActivity : BaseActivity {\n\n @Inject\n lateinit var myAudio: Audio\n @Inject\n lateinit var wakeLock: PowerManager.WakeLock\n @Inject\n lateinit var apiService …Run Code Online (Sandbox Code Playgroud) 我正在尝试完成这个 Flutter Code Lab,但这些图标没有出现在我的应用程序中.但它们出现在Android Studio代码中:
我已将lib包含在我的文件中 pubspec.yaml
name: startup_namer
description: A new Flutter application.
dependencies:
flutter:
sdk: flutter
cupertino_icons: ^0.1.0
english_words: ^3.1.0
Run Code Online (Sandbox Code Playgroud)
我的main.dart文件如下所示:
// Add the heart icons to the ListView.
import 'package:flutter/material.dart';
import 'package:english_words/english_words.dart';
void main() => runApp(new MyApp());
class MyApp extends StatelessWidget {
.....
Widget _buildRow(WordPair pair) {
final bool alreadySaved = _saved.contains(pair);
return new ListTile(
title: new Text(
pair.asPascalCase,
style: _biggerFont,
),
trailing: new Icon(
alreadySaved ? Icons.favorite : Icons.favorite_border,
color: alreadySaved ? Colors.red : …Run Code Online (Sandbox Code Playgroud)