小编Dom*_*ski的帖子

如何使用 PageView 显示多个页面?

我有一个使用PageView的应用程序,我想让它具有响应性——例如,在平板电脑上,它显示 3 个页面,而在智能手机上,它只显示一个:

在此处输入图片说明

如何更改 PageView 中显示的页数?

flutter flutter-layout

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

轻敲内部的 InkWell 时如何防止对周围的 InkWell 产生涟漪效应

假设我有这个小部件:

Card(
  child: InkWell(
    onTap: () {},
    child: Padding(
      padding: const EdgeInsets.all(28.0),
      child: RaisedButton(
        child: Text('Test'),
        onPressed: () {},
      ),
    ),
  ),
),
Run Code Online (Sandbox Code Playgroud)

我想禁止(防止示出)连锁反应上Card/InkWell只有当RaisedButton被窃听,但以显示它时,Card被分接(即,按钮之外)。有什么办法可以达到这个效果吗?

我认为普遍的问题可以是:如何防止在点击内部 InkWell 时对周围 InkWell 产生连锁反应?如果你的源代码看看,你可以看到,RaisedButtonMaterialInkWell小部件引起波动。

这是完整的示例代码

在此处输入图片说明

dart flutter flutter-layout

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

如何在 Flutter 中的 NestedScrollView 中设置 SliverAppBar 的最小高度

我想在普通 Scaffold 应用程序的 NestedScrollView 中使用 SliverAppBar。当用户向下滚动时,我还希望应用栏的最小高度。

我无法弄清楚如何使用 PreferredSize 小部件或在线找到的任何其他解决方案,例如this

这是我目前的简化解决方案:

import 'package:flutter/material.dart';

void main() => runApp(MyApp());

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'Flutter Demo',
      theme: ThemeData(primarySwatch: Colors.blue, fontFamily: 'Oswald'),
      home: SliverHome(),
    );
  }
}

class SliverHome extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return Container(
      child: testHome(),
    );
  }

  Widget testHome() {
    return Scaffold(
      body: NestedScrollView(
        headerSliverBuilder: (BuildContext context, bool innerBoxIsScrolled) {
          return <Widget>[
            SliverAppBar( // this is where I …
Run Code Online (Sandbox Code Playgroud)

user-interface dart flutter

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

使用 MvvmCross 6.0 在本机 Xamarin 应用程序中嵌入 Xamarin 表单

我正在尝试使用 MvvmCross 6.0 将 Forms XAML 视图嵌入到 Xamarin Native 应用程序中。

我试图重现此解决方案的效果,但我在注册IMvxFormsViewPresenter. 我也跟着这个教程

我有一个简单的MainContainerActivitywith MainFragmentMainViewModel在 Core 中对应),其中包含一个指向 Forms SettingsActivity/的按钮SettingsViewModel

可以在测试存储库中找到完整的源代码。

目前,我在base.OnCreate(bundle);导航到SettingsViewModel以下位置时遇到了异常:

已抛出 MvvmCross.Exceptions.MvxIoCResolveException

无法解析类型 MvvmCross.Forms.Presenters.IMvxFormsViewPresenter

我找不到注册此 Forms Presenter 的方法。我试图做到这一点,Setup但没有成功。

我也尝试解决MvxFormsAndroidViewPresenterSplashActivity但结果为Mvx.Resolve<IMvxViewPresenter>() as MvxFormsAndroidViewPresenter;空。

你知道我应该怎么做才能将 Forms 视图合并到 MvvmCross 6.0 本机应用程序中吗?

namespace MvvmCrossFormsEmbedding.Droid.Views
{
    [Activity(Theme = "@style/AppTheme",
              Label = "SettingsActivity")]
    public class SettingsActivity : MvxFormsAppCompatActivity<SettingsViewModel>
    { …
Run Code Online (Sandbox Code Playgroud)

xamarin.android mvvmcross xamarin xamarin.forms

6
推荐指数
0
解决办法
346
查看次数

如何使用 fastlane 缩短 Flutter iOS 应用程序的构建时间

我的问题是,当使用 Firebase 时(cloud_firestore特别是),Flutter iOS 应用程序的构建时间变得很长,以至于我在 Bitrise 上的 CI 构建超时(28flutter build --release分钟,fastlane 的 20 分钟以上build_ios_app)。所以我无法在我的 CI 上执行完整的 iOS 构建。缓存当然是可能的,但首先必须完成初始构建:/

根据本指南,在使用 Fastlane 使用 Xcode 进行存档时,有必要重建 iOS 应用程序。然而,在官方 Github 存储库上有一个关于引入直接从 Flutter 发布 IPA 文件的命令的讨论,但目前这是不可能的。

我的问题是 - 有没有什么方法可以缩短这个构建时间,例如通过跳过 fastlane 步骤中的构建,只是将 .app 文件辞职并存档到 .ipa?我不能自己让它工作。

在这里,你可能会发现一个样品扑应用cloud_firestore功能。

您可以在下面找到我的 Bitrise 和 fastlane 配置:

---
format_version: '7'
default_step_lib_source: https://github.com/bitrise-io/bitrise-steplib.git
project_type: flutter
trigger_map:
- push_branch: master
workflow: test
workflows:
prepare:
    steps:
    - activate-ssh-key@4.0.3:
        run_if: '{{getenv …
Run Code Online (Sandbox Code Playgroud)

xcode ios fastlane flutter bitrise

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

使用 AnimatedOpacity 隐藏和显示复杂的小部件在 Flutter 中无效吗?

我正在使用在我的应用程序的各种状态之间AnimatedOpacity隐藏一些小部件Stack

例如,我有Stack下面的ListView动画加载指示器(微光),以便在填充列表时,动画背景不透明度逐渐设置为 0。

Stack:
 - AnimatedOpacity (
      opacity: _populated ? 0.0 : 1.0, 
      child: AnimatedLoadingWidget,
   ),
 - ListView
Run Code Online (Sandbox Code Playgroud)

我是否正确理解 AnimatedLoadingWidget 中的动画会继续并呈现,即使不透明度设置为 0.0?它对应用程序的性能有影响吗?

dart flutter flutter-animation

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

如何在 Flutter 中使用 json_serialized 反序列化 Firestore 文档及其 id?

我的 Firestore 数据库中有一个简单的消息文档,其中包含一些字段。

在此输入图像描述

我用json_serializable反序列化它来反对。我的课程如下所示:

import 'package:cloud_firestore/cloud_firestore.dart';
import 'package:equatable/equatable.dart';
import 'package:json_annotation/json_annotation.dart';

part 'message_firestore.g.dart';

@JsonSerializable(nullable: true, explicitToJson: true)
class MessageFirestore extends Equatable {
  MessageFirestore(
      this.id, this.content, this.conversationId, this.senderId, this.dateSent);

  factory MessageFirestore.fromJson(Map<String, dynamic> json) =>
      _$MessageFirestoreFromJson(json);

  Map<String, dynamic> toJson() => _$MessageFirestoreToJson(this);

  @JsonKey(name: 'Id')
  final String id;
  @JsonKey(name: 'Content')
  final String content;
  @JsonKey(name: 'ConversationId')
  final String conversationId;
  @JsonKey(name: 'SenderId')
  final String senderId;
  @JsonKey(name: 'DateSent', fromJson: _fromJson, toJson: _toJson)
  final DateTime dateSent;

  static DateTime _fromJson(Timestamp val) =>
      DateTime.fromMillisecondsSinceEpoch(val.millisecondsSinceEpoch);
  static Timestamp _toJson(DateTime time) => …
Run Code Online (Sandbox Code Playgroud)

dart flutter google-cloud-firestore

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

如何通过Xamarin MvvmCross中的BottomNavigationView在视图模型之间导航

假设我们有MvvmCross 6.0.1本机应用程序,其中一个Android Activity包含了James MontemagnoBottomNavigationView本博文中实现的功能,但没有导航和替换片段。

我想做的是将BottomNavigationView项目绑定到ViewModel中的MvxCommands(或MvxAsyncCommands),以便在多个ViewModels之间导航。

我应该采用哪种架构来实现这一目标?我的方法是正确的还是针对MVVM模式和MvvmCross可能性做些什么?

可以在github上找到带有几个附加功能的完整示例。

显示当前进度的GIF动画

目前,我(用MvxScaffolding搭建了脚手架)。

  • MainContainerActivity以及相应的内容MainContainerViewModel-在这里我想存储命令以在视图模型之间导航
  • MainFragment并对应MainViewModel-这是第一个片段/视图模型
  • SettingsFragment以及相应的内容SettingsViewModel-我想从中导航至它,MainViewModel反之亦然
  • FavoritesFragment 并对应 FavoritesViewModel

主要活动如下:

using Android.App;
using Android.OS;
using Android.Views;
using PushNotifTest.Core.ViewModels.Main;
using Microsoft.AppCenter;
using Microsoft.AppCenter.Analytics;
using Microsoft.AppCenter.Crashes;
using Microsoft.AppCenter.Push;
using Android.Graphics.Drawables;
using Android.Support.Design.Widget;
using MvvmCross.Binding.BindingContext;
using System;
using System.Windows.Input;

namespace PushNotifTest.Droid.Views.Main
{
    [Activity(
        Theme = "@style/AppTheme",
        WindowSoftInputMode = SoftInput.AdjustResize | SoftInput.StateHidden)]
    public class …
Run Code Online (Sandbox Code Playgroud)

mvvm xamarin.android mvvmcross xamarin

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

如何在 Flutter 中滚动时为列表中的项目设置动画

我想在 Flutter 中创建一个网格列表视图,其效果类似于下面右侧显示的效果。瓷砖的移动与速度成比例地延迟。类似的效果可以在这里看到。

动画列表示例

我尝试修改SliverGridDelegate实现以mainAxisStride根据滚动速度增加值。

在我CustomScrollView,我把修改SliverGridSliverAnimatedGrid)与自定义的委托,我叫SliverGridDelegateWithFixedCrossAxisCountAndAnimation这是基于SliverGridDelegateWithFixedCrossAxisCount

SliverGridDelegateWithFixedCrossAxisCountAndAnimationScrollControllergetLayout(SliverConstraints constraints)函数中接受 并使用其速度来增加mainAxisStride网格。

当前实现:

  @override
  SliverGridLayout getLayout(SliverConstraints constraints) {
    assert(_debugAssertIsValid());
    final double usableCrossAxisExtent =
        constraints.crossAxisExtent - crossAxisSpacing * (crossAxisCount - 1);
    final double childCrossAxisExtent = usableCrossAxisExtent / crossAxisCount;
    final double childMainAxisExtent = childCrossAxisExtent / childAspectRatio;
    // Here accessing scroll controller velocity
    final velocity = (controller.position.activity.velocity / 100.0).clamp(0, 20);
    return SliverGridRegularTileLayout(
      crossAxisCount: crossAxisCount,
      mainAxisStride: …
Run Code Online (Sandbox Code Playgroud)

flutter flutter-sliver

5
推荐指数
0
解决办法
659
查看次数

iOS部分使用bluetooth-central后台执行模式时如何暂停Flutter在后台运行

我的应用程序使用CoreBluetooth 状态恢复和保存 (SRP)连接到 BLE 配件,并使用bluetooth-central后台执行模式。这意味着用 Swift 编写的应用程序的本机部分即使在应用程序处于后台时也可以连续接收 HR 样本。然而,我还可以看到,尽管应用程序处于paused生命周期状态,但应用程序的 Flutter 部分仍在运行。

我做了一个简单的实验,并在使用不使用Core Bluetooth SRP时在 Flutter 中启动计时器。

  • 不使用 SRP 时,计时器会在 20 秒后停止打印到日志中
  • 使用 SRP 时,只要 BLE 配件发送 HR 样本,定时器就会无限期地运行

我想要的是保持典型的Flutter 行为,但继续在本机端使用 SRP。

  1. 当应用程序进入暂停状态时,Flutter 的哪一部分负责停止“执行”?
  2. 尽管 SRP 使应用程序保持唤醒状态(由于使用bluetooth-central模式和接收连续的 HR 更新),Flutter 是否可以暂停?
  3. 有没有办法让 Flutter 引擎以paused编程方式声明?
  4. 如果没有,您是否看到任何其他方法来保持典型的Flutter 引擎/ViewController 行为?

ios core-bluetooth flutter flutter-engine

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