header-bg.jpg
Flutter 实战 App 项目总结
发表于 2020-05-16 13:23
|
分类于 学海无涯
|
评论次数 0
|
阅读次数 118

自定义滚动组件水波纹

Material 的滚动组件如 SingleChildScrollView 在滚动至顶部或底部时会显示水波纹效果,若需要关闭水波纹,则使用如下的类:

import 'package:flutter/material.dart';

class ExtendedScrollBehavior extends ScrollBehavior {
  final bool showLeading;
  final bool showTrailing;

  ExtendedScrollBehavior({this.showLeading = false, this.showTrailing = false});

  
  Widget buildViewportChrome(
      BuildContext context, Widget child, AxisDirection axisDirection) {
    switch (getPlatform(context)) {
      case TargetPlatform.iOS:
        return child;
      case TargetPlatform.android:
      case TargetPlatform.windows:
      case TargetPlatform.linux:
      case TargetPlatform.macOS:
      case TargetPlatform.fuchsia:
        return GlowingOverscrollIndicator(
          child: child,
          // 头部水波纹
          showLeading: showLeading,
          // 尾部水波纹
          showTrailing: showTrailing,
          axisDirection: axisDirection,
          color: Theme.of(context).hintColor,
        );
    }

    return null;
  }
}

ExtendedScrollBehavior 构造函数有两个可选参数:

以上两个参数默认值都是 false,即不显示水波纹。

调用方式很简单,例如,只显示顶部水波纹:

ScrollConfiguration(
  behavior: ExtendedScrollBehavior(showLeading: true),
  child: SingleChildScrollView(),
)

页面 POP

NavigatorState.pushNamed 后再调用 NavigatorState.pop 返回上一页时,两个页面都会发生 build,而普通的 NavigatorState.push 后再调用 NavigatorState.pop 返回上一页并不会导致 build

安卓端打包及上架各大应用商店

减少 apk 大小

Flutter 1.17.2 在默认情况下,打包后支持 x86_64armeabi-v7aarm64-v8a 三种 CPU 架构的手机,解压一个空 demo 的 apk 可以看到相应的配置:

apk.png

/android/app/build.gradle 中,可以配置 abiFilters 选项,通过减少支持的架构来减少 apk 的大小,例如我的项目的配置是:

android {
    buildTypes {
        release {
            ndk {
                abiFilters 'arm64-v8a'
            }
        }
    }
}

上架应用商店提示无法获取签名

如下图所示:

0.png

如果遇到以上提示,运行以下命令:

D:\office\androidstudio\jre\bin\jarsigner -verbose -sigalg SHA1withRSA -digestalg SHA1 -keystore D:\office\android\vhiphop\android\vhiphopKey -storepass a1234567 D:\office\android\vhiphop\build\app\outputs\apk\release\app-release.apk vhiphop_alias

其中 D:\office\androidstudio\jre\bin\jarsignerjarsigner 的所在路径,运行 flutter doctor -v 可以获取到路径,如下图所示:

1.png

其中 D:\office\android\vhiphop\android\vhiphopKey 是秘钥文件所在路径,如果是老项目,已经创建过该文件,直接使用即可,未创建则使用以下命令生成一个秘钥文件即可:

keytool -genkey -v -keystore ~/key.jks -keyalg RSA -keysize 2048 -validity 10000 -alias key

发布评论
还没有评论,快来抢沙发吧!