假设我有这个小部件:
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 产生连锁反应?如果你的源代码看看,你可以看到,RaisedButton有Material和InkWell小部件引起波动。
我想在普通 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) 我正在尝试使用 MvvmCross 6.0 将 Forms XAML 视图嵌入到 Xamarin Native 应用程序中。
我试图重现此解决方案的效果,但我在注册IMvxFormsViewPresenter. 我也跟着这个教程。
我有一个简单的MainContainerActivitywith MainFragment(MainViewModel在 Core 中对应),其中包含一个指向 Forms SettingsActivity/的按钮SettingsViewModel。
可以在测试存储库中找到完整的源代码。
目前,我在base.OnCreate(bundle);导航到SettingsViewModel以下位置时遇到了异常:
已抛出 MvvmCross.Exceptions.MvxIoCResolveException
无法解析类型 MvvmCross.Forms.Presenters.IMvxFormsViewPresenter
我找不到注册此 Forms Presenter 的方法。我试图做到这一点,Setup但没有成功。
我也尝试解决MvxFormsAndroidViewPresenter,SplashActivity但结果为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) 我的问题是,当使用 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) 我正在使用在我的应用程序的各种状态之间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?它对应用程序的性能有影响吗?
我的 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) 假设我们有MvvmCross 6.0.1本机应用程序,其中一个Android Activity包含了James MontemagnoBottomNavigationView在本博文中实现的功能,但没有导航和替换片段。
我想做的是将BottomNavigationView项目绑定到ViewModel中的MvxCommands(或MvxAsyncCommands),以便在多个ViewModels之间导航。
我应该采用哪种架构来实现这一目标?我的方法是正确的还是针对MVVM模式和MvvmCross可能性做些什么?
可以在github上找到带有几个附加功能的完整示例。
目前,我(用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) 我想在 Flutter 中创建一个网格列表视图,其效果类似于下面右侧显示的效果。瓷砖的移动与速度成比例地延迟。类似的效果可以在这里看到。
我尝试修改SliverGridDelegate实现以mainAxisStride根据滚动速度增加值。
在我CustomScrollView,我把修改SliverGrid(SliverAnimatedGrid)与自定义的委托,我叫SliverGridDelegateWithFixedCrossAxisCountAndAnimation这是基于SliverGridDelegateWithFixedCrossAxisCount。
SliverGridDelegateWithFixedCrossAxisCountAndAnimationScrollController在getLayout(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) 我的应用程序使用CoreBluetooth 状态恢复和保存 (SRP)连接到 BLE 配件,并使用bluetooth-central后台执行模式。这意味着用 Swift 编写的应用程序的本机部分即使在应用程序处于后台时也可以连续接收 HR 样本。然而,我还可以看到,尽管应用程序处于paused生命周期状态,但应用程序的 Flutter 部分仍在运行。
我做了一个简单的实验,并在使用和不使用Core Bluetooth SRP时在 Flutter 中启动计时器。
我想要的是保持典型的Flutter 行为,但继续在本机端使用 SRP。
bluetooth-central模式和接收连续的 HR 更新),Flutter 是否可以暂停?paused编程方式声明?