小编MeL*_*ine的帖子

如何在Flutter中设置AlertDialog动作的样式

我用这个方法来显示一个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)

一切正常,但按钮右对齐,如下图所示:

在此输入图像描述

我想要设置一些按钮的样式,例如一个按钮开始另一个.我搜索了文档,但只找到了如何使它们成为"堆叠全宽按钮".任何想法如何设置按钮的样式?

android-alertdialog dart flutter

13
推荐指数
6
解决办法
2万
查看次数

如何在 Flutter 中为容器小部件加下划线

我试图在我的 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)

但是现在我希望下划线不是从头到尾,我希望在开始和结束时都有空间。如果有一些更聪明的方式来给小部件加下划线,我也会很高兴看到它。

widget underline flutter

6
推荐指数
3
解决办法
8853
查看次数

具有 ViewModel 参数时,Jetpack Compose 预览不显示

我正在使用 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

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

如何在RecyclerVIew xml的tools:listitem命名空间中显示多个布局

我有一个具有不同类型的 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时也是一样的。

layout android

5
推荐指数
2
解决办法
708
查看次数

是否可以为 Android SDK 26 设置通知通道振动模式的重复次数

我正在尝试在本地通知上使用自定义振动。阅读了一些内容后,我在通知通道中设置了自定义振动模式,如下所示:

 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)

我有一个想法,将模式设置为看起来像最后一个,并将系统设置为重复几次,但到目前为止我还没有找到如何做到这一点。

我很高兴在这里得到一些帮助。

android vibration notification-channel

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

Jetpack Compose Navigation 无限加载屏幕

我正在尝试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

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

Flutter 抛出异常 BoxConstraints 强制无限宽度

我正在尝试使用复选框实现 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)

width dart flutter

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

Dagger 无法提供 Kotlin 注入

当我尝试使用 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)

android kotlin dagger-2

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

颤动的图标不显示

我正在尝试完成这个 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)

flutter

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