小编pun*_*ife的帖子

如何检查设备是否需要 SafeArea?(需要底部/顶部填充)

有没有办法可以检查运行该应用程序的设备是否需要 SafeArea。我需要根据这个 true 或 false 值运行代码。我不需要使用 SafeArea 小部件。如果设备需要填充,我只需要正确或错误的答案。

例如。像 iPhone 8 这样的设备不需要填充,即使 Widget 包裹在 SafeArea 小部件中也不会有填充。

例如。像 iPhone X 这样的设备确实需要填充,如果 Widget 被包裹在 SafeArea 中就会有填充。

SafeArea 小部件如何判断设备是否需要填充?我查看了 SafeArea 小部件代码,但无法理解会发生什么来告诉它设备是否需要填充。

dart flutter

12
推荐指数
2
解决办法
5196
查看次数

让音乐应用在后台、iOS 和 Android 中保持活跃?

我正在使用 Flutter 构建一个音乐播放应用程序。它可以帮助我作为一个开发人员为两个平台构建一次应用程序。但是,我在两个平台上都遇到了一些小问题。虽然我已经克服了其中的一些障碍,但我还是无法找出一个主要的错误/问题,这只是为了制作音乐应用程序的目的。如果应用程序不在前台,音乐不会改变。

我正在使用包:audioplayers(https://pub.dartlang.org/packages/audioplayers)。我的应用程序正在播放歌曲,mp3 文件在线托管并具有单独的链接。

当第一首歌曲完成播放时,AudioPlayerState.COMPLETED。我打电话玩,新的歌曲网址。如果应用程序在前台,这可以正常工作,但如果应用程序在后台,则它不起作用。这种情况发生在最新版本的 iOS 上,我在 Android 5.0(而不是 Android 8.0+)上发现了这一点。在 Android Studio 的 RUN 选项卡中,当我对此进行测试时,它确实向我显示已拨打电话,但歌曲没有播放,但是当我打开应用程序时,它确实显示了更新的专辑封面,该专辑封面也位于 url 上(不在歌曲元数据)。如果我调用简历,从后台打开应用程序备份后,歌曲开始播放。

我不知道这是包的问题还是 iOS 的问题,我在包 Github 上打开了一个问题。但是,我相信 iOS 和以前一样,如果在我检查 Xcode 中的背景音频之前将应用程序最小化,它就不会播放歌曲。

import 'package:flutter/material.dart';
import 'package:audioplayers/audioplayers.dart';
import 'dart:math';

AudioPlayer audioPlayer = new AudioPlayer();

class MusicPlay {
  MusicPlay() {
    _initAudioPlayer();
  }

  play(String audioURL) async {
    int result = await audioPlayer.play(audioURL);
    if (result == 1) {
      // success
    }
  }

  nextSong() async {
    play(String nextAudioURL)
  }

  void _initAudioPlayer() {
    audioPlayer.audioPlayerStateChangeHandler = (AudioPlayerState state) { …
Run Code Online (Sandbox Code Playgroud)

flutter flutter-dependencies

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

如何处理在 Flutter 中搜索大列表?

我想问一下我应该如何处理 Flutter 中的大列表。当我位于我正在搜索的列表中非常深的数据项时,我的应用程序变得非常慢。我的清单是一个大数据结构的 70,000 多个对象。

以下是我“搜索”列表的方式。

Future<Iterable<SomeDataStruct>> _getAllData() async {
    return allData.where((a) => (a.dataTitle.toLowerCase().contains(querySearch.toLowerCase().trim())));
}
Run Code Online (Sandbox Code Playgroud)

使用 FutureBuilder 中的 ListView.builder 构建列表。

当我搜索并填充列表深处的一个或多个结果时,应用程序非常慢,以至于我单击列表项时,它需要几秒钟才能执行 onTap。如果我需要更改搜索查询,则在单击 TextField 后软键盘需要时间才能恢复。

我在哪里犯了错误或处理这个错误,我应该怎么做才能让我的庞大列表可搜索而不使应用程序无法忍受。

编辑: 更改代码后,我如何使它不减慢应用程序的速度。这样对吗?

String tempQuery;
List<SomeDataStruct> searchResults = [];
Future<List<SomeDataStruct>> _getAllData() async {
    if(querySearch!=tempQuery) {
      tempQuery = querySearch;
      searchResults = allData.where((a) => (a.dataTitle.toLowerCase().contains(querySearch.toLowerCase().trim()))).toList();
    }
    return searchResults;
  }
Run Code Online (Sandbox Code Playgroud)

dart flutter

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

限制文本小部件的字符数?

我试图找出如何在抖动文本小部件中显示省略号之前限制显示的字符数量。

flutter

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

Android 10 MediaStyle 通知搜索栏为黑色

Android 10 中引入的 MediaStyle 通知可以工作,但呈黑色且不显示持续时间。

带有黑色搜索栏的 Android 10 媒体样式通知

这是代码的链接:https://github.com/ryanheise/audio_service/blob/master/android/src/main/java/com/ryanheise/audioservice/AudioService.java

参考另一个问题:android 10 see bar on notification

这种情况似乎只发生在某些设备上,而在其他设备上,搜索栏将显示得非常好。

此外,在同一设备上,其他媒体播放器也具有完美的显示搜索栏,例如 Youtube、Youtube Red、Google Play Music 等。

android exoplayer

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

标签 统计

flutter ×4

dart ×2

android ×1

exoplayer ×1

flutter-dependencies ×1