Skip to content

⚡️ Improve text scale handling #177

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 11 commits into from Jul 16, 2021
3 changes: 1 addition & 2 deletions lib/src/constants/constants.dart
Original file line number Diff line number Diff line change
Expand Up @@ -43,8 +43,7 @@ class Constants {
static GlobalKey pickerKey = GlobalKey();

static AssetsPickerTextDelegate textDelegate = AssetsPickerTextDelegate();
static SortPathDelegate<dynamic> sortPathDelegate =
SortPathDelegate.common;
static SortPathDelegate<dynamic> sortPathDelegate = SortPathDelegate.common;

/// The last scroll position where the picker scrolled.
///
Expand Down
46 changes: 24 additions & 22 deletions lib/src/delegates/asset_picker_builder_delegate.dart
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,7 @@ import 'package:flutter/services.dart';
import '../constants/constants.dart';
import '../widget/builder/asset_entity_grid_item_builder.dart';
import '../widget/builder/value_listenable_builder_2.dart';
import '../widget/scale_text.dart';

typedef IndicatorBuilder = Widget Function(
BuildContext context,
Expand Down Expand Up @@ -247,7 +248,7 @@ abstract class AssetPickerBuilderDelegate<Asset, Path> {
color: theme.iconTheme.color!.withOpacity(0.75),
)
: null,
child: Text(
child: ScaleText(
Constants.textDelegate.gifIndicator,
style: TextStyle(
color: isAppleOS
Expand All @@ -256,10 +257,7 @@ abstract class AssetPickerBuilderDelegate<Asset, Path> {
fontSize: isAppleOS ? 14.0 : 12.0,
fontWeight: isAppleOS ? FontWeight.w500 : FontWeight.normal,
),
strutStyle: const StrutStyle(
forceStrutHeight: true,
height: 1.0,
),
strutStyle: const StrutStyle(forceStrutHeight: true, height: 1.0),
),
),
),
Expand Down Expand Up @@ -313,7 +311,7 @@ abstract class AssetPickerBuilderDelegate<Asset, Path> {
return loadingIndicatorBuilder!(c, isAssetsEmpty);
}
if (isAssetsEmpty) {
return const Text('Nothing here.');
return const ScaleText('Nothing here.', maxScaleFactor: 1.5);
}
return w!;
},
Expand All @@ -329,7 +327,7 @@ abstract class AssetPickerBuilderDelegate<Asset, Path> {
/// 资源缩略数据加载失败时使用的部件
Widget failedItemBuilder(BuildContext context) {
return Center(
child: Text(
child: ScaleText(
Constants.textDelegate.loadFailed,
textAlign: TextAlign.center,
style: const TextStyle(fontSize: 18.0),
Expand Down Expand Up @@ -420,7 +418,7 @@ abstract class AssetPickerBuilderDelegate<Asset, Path> {
),
const SizedBox(width: 15),
Expanded(
child: Text(
child: ScaleText(
Constants.textDelegate.accessAllTip,
style: context.themeData.textTheme.caption?.copyWith(
fontSize: 14,
Expand Down Expand Up @@ -513,13 +511,13 @@ abstract class AssetPickerBuilderDelegate<Asset, Path> {
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
children: <Widget>[
Text(
ScaleText(
Constants.textDelegate.unableToAccessAll,
style: const TextStyle(fontSize: 22),
textAlign: TextAlign.center,
),
SizedBox(height: size.height / 30),
Text(
ScaleText(
Constants.textDelegate.accessAllTip,
style: const TextStyle(fontSize: 18),
textAlign: TextAlign.center,
Expand All @@ -537,7 +535,7 @@ abstract class AssetPickerBuilderDelegate<Asset, Path> {
shape: RoundedRectangleBorder(
borderRadius: BorderRadius.circular(5),
),
child: Text(
child: ScaleText(
Constants.textDelegate.goToSystemSettings,
style: const TextStyle(fontSize: 17.0),
),
Expand All @@ -547,7 +545,7 @@ abstract class AssetPickerBuilderDelegate<Asset, Path> {

final Widget _accessLimitedButton = GestureDetector(
onTap: () => permissionOverlayHidden.value = true,
child: Text(
child: ScaleText(
Constants.textDelegate.accessLimitedAssets,
style: TextStyle(color: interactiveTextColor(context)),
),
Expand Down Expand Up @@ -1084,7 +1082,7 @@ class DefaultAssetPickerBuilderDelegate
),
child: Padding(
padding: const EdgeInsetsDirectional.only(start: 4.0),
child: Text(
child: ScaleText(
Constants.textDelegate.durationIndicatorBuilder(
Duration(seconds: asset.duration),
),
Expand All @@ -1111,7 +1109,7 @@ class DefaultAssetPickerBuilderDelegate
),
child: Padding(
padding: const EdgeInsetsDirectional.only(start: 4.0, end: 30.0),
child: Text(
child: ScaleText(
asset.title ?? '',
style: const TextStyle(fontSize: 16.0),
maxLines: 1,
Expand Down Expand Up @@ -1141,7 +1139,7 @@ class DefaultAssetPickerBuilderDelegate
shape: RoundedRectangleBorder(
borderRadius: BorderRadius.circular(3.0),
),
child: Text(
child: ScaleText(
provider.isSelectedNotEmpty && !isSingleAssetMode
? '${Constants.textDelegate.confirm}'
' (${provider.selectedAssets.length}/${provider.maxAssets})'
Expand Down Expand Up @@ -1208,7 +1206,7 @@ class DefaultAssetPickerBuilderDelegate
selector: (_, DefaultAssetPickerProvider p) => p.isAssetsEmpty,
builder: (_, bool isAssetsEmpty, __) {
if (isAssetsEmpty) {
return const Text('Nothing here.');
return const ScaleText('Nothing here.', maxScaleFactor: 1.5);
}
return PlatformProgressIndicator(
color: theme.iconTheme.color,
Expand Down Expand Up @@ -1373,7 +1371,7 @@ class DefaultAssetPickerBuilderDelegate
children: <Widget>[
if (p != null)
Flexible(
child: Text(
child: ScaleText(
isPermissionLimited && p.isAll
? Constants.textDelegate.accessiblePathName
: p.name,
Expand All @@ -1383,6 +1381,7 @@ class DefaultAssetPickerBuilderDelegate
),
maxLines: 1,
overflow: TextOverflow.ellipsis,
maxScaleFactor: 1.2,
),
),
w!,
Expand Down Expand Up @@ -1474,7 +1473,7 @@ class DefaultAssetPickerBuilderDelegate
Flexible(
child: Padding(
padding: const EdgeInsetsDirectional.only(end: 10.0),
child: Text(
child: ScaleText(
isPermissionLimited && pathEntity.isAll
? Constants.textDelegate.accessiblePathName
: pathEntity.name,
Expand All @@ -1484,7 +1483,7 @@ class DefaultAssetPickerBuilderDelegate
),
),
),
Text(
ScaleText(
'(${pathEntity.assetCount})',
style: TextStyle(
color: theme.textTheme.caption?.color,
Expand Down Expand Up @@ -1555,7 +1554,7 @@ class DefaultAssetPickerBuilderDelegate
p.selectedDescriptions,
builder: (_, __, ___) => Padding(
padding: const EdgeInsets.symmetric(vertical: 12.0),
child: Text(
child: ScaleText(
isSelectedNotEmpty
? '${Constants.textDelegate.preview}'
' (${provider.selectedAssets.length})'
Expand All @@ -1566,6 +1565,7 @@ class DefaultAssetPickerBuilderDelegate
: theme.textTheme.caption?.color,
fontSize: 18.0,
),
maxScaleFactor: 1.2,
),
),
),
Expand Down Expand Up @@ -1732,14 +1732,15 @@ class DefaultAssetPickerBuilderDelegate
? Container(
alignment: AlignmentDirectional.topStart,
padding: const EdgeInsets.all(14),
child: Text(
child: ScaleText(
'${index + 1}',
style: TextStyle(
color: theme.textTheme.bodyText1?.color
?.withOpacity(.75),
fontWeight: FontWeight.w600,
height: 1,
),
maxScaleFactor: 1.4,
),
)
: const SizedBox.shrink(),
Expand Down Expand Up @@ -1780,7 +1781,7 @@ class DefaultAssetPickerBuilderDelegate
Expanded(
child: Padding(
padding: const EdgeInsetsDirectional.only(start: 4.0),
child: Text(
child: ScaleText(
Constants.textDelegate.durationIndicatorBuilder(
Duration(seconds: asset.duration),
),
Expand All @@ -1790,6 +1791,7 @@ class DefaultAssetPickerBuilderDelegate
height: 1.4,
),
maxLines: 1,
maxScaleFactor: 1.2,
),
),
),
Expand Down
13 changes: 8 additions & 5 deletions lib/src/delegates/asset_picker_viewer_builder_delegate.dart
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,7 @@ import 'package:extended_image/extended_image.dart';
import '../constants/constants.dart';
import '../widget/builder/value_listenable_builder_2.dart';
import '../widget/custom_checkbox.dart';
import '../widget/scale_text.dart';

abstract class AssetPickerViewerBuilderDelegate<Asset, Path> {
AssetPickerViewerBuilderDelegate({
Expand Down Expand Up @@ -186,7 +187,7 @@ abstract class AssetPickerViewerBuilderDelegate<Asset, Path> {
/// 资源缩略数据加载失败时使用的部件
Widget failedItemBuilder(BuildContext context) {
return Center(
child: Text(
child: ScaleText(
Constants.textDelegate.loadFailed,
textAlign: TextAlign.center,
style: const TextStyle(fontSize: 18.0),
Expand Down Expand Up @@ -372,7 +373,9 @@ class DefaultAssetPickerViewerBuilderDelegate
break;
case AssetType.other:
builder = Center(
child: Text(Constants.textDelegate.unSupportedAssetType),
child: ScaleText(
Constants.textDelegate.unSupportedAssetType,
),
);
break;
}
Expand Down Expand Up @@ -641,7 +644,7 @@ class DefaultAssetPickerViewerBuilderDelegate
initialData: currentIndex,
stream: pageStreamController.stream,
builder: (_, AsyncSnapshot<int> snapshot) => Center(
child: Text(
child: ScaleText(
'${snapshot.data! + 1}/${previewAssets.length}',
style: const TextStyle(
fontSize: 18.0,
Expand Down Expand Up @@ -685,7 +688,7 @@ class DefaultAssetPickerViewerBuilderDelegate
shape: RoundedRectangleBorder(
borderRadius: BorderRadius.circular(3.0),
),
child: Text(
child: ScaleText(
() {
if (isWeChatMoment && hasVideo) {
return Constants.textDelegate.confirm;
Expand Down Expand Up @@ -810,7 +813,7 @@ class DefaultAssetPickerViewerBuilderDelegate
},
),
if (!isAppleOS)
Text(
ScaleText(
Constants.textDelegate.select,
style: const TextStyle(fontSize: 18.0),
),
Expand Down
1 change: 0 additions & 1 deletion lib/src/widget/asset_picker.dart
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,6 @@
///

import 'package:flutter/material.dart';
import 'package:flutter/foundation.dart';
import 'package:flutter/services.dart';

import '../constants/constants.dart';
Expand Down
2 changes: 0 additions & 2 deletions lib/src/widget/asset_picker_viewer.dart
Original file line number Diff line number Diff line change
Expand Up @@ -4,9 +4,7 @@
///
import 'dart:async';

import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart';
import 'package:flutter/foundation.dart';

import '../constants/constants.dart';

Expand Down
3 changes: 2 additions & 1 deletion lib/src/widget/builder/asset_entity_grid_item_builder.dart
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@ import 'package:extended_image/extended_image.dart';

import '../../constants/constants.dart';
import '../../provider/asset_entity_image_provider.dart';
import '../../widget/scale_text.dart';

class AssetEntityGridItemBuilder extends StatefulWidget {
const AssetEntityGridItemBuilder({
Expand Down Expand Up @@ -54,7 +55,7 @@ class AssetEntityGridItemWidgetState extends State<AssetEntityGridItemBuilder> {
/// 资源缩略数据加载失败时使用的部件
Widget failedItemBuilder(BuildContext context) {
return Center(
child: Text(
child: ScaleText(
Constants.textDelegate.loadFailed,
textAlign: TextAlign.center,
style: const TextStyle(fontSize: 18.0),
Expand Down
7 changes: 4 additions & 3 deletions lib/src/widget/builder/audio_page_builder.dart
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,8 @@ import 'dart:async';

import 'package:flutter/material.dart';

import 'package:wechat_assets_picker/src/constants/constants.dart';
import '../../../src/constants/constants.dart';
import '../scale_text.dart';

class AudioPageBuilder extends StatefulWidget {
const AudioPageBuilder({
Expand Down Expand Up @@ -106,7 +107,7 @@ class _AudioPageBuilderState extends State<AudioPageBuilder> {
/// Title widget.
/// 标题组件
Widget get titleWidget {
return Text(
return ScaleText(
widget.asset.title ?? '',
style: const TextStyle(fontSize: 20.0, fontWeight: FontWeight.normal),
);
Expand Down Expand Up @@ -144,7 +145,7 @@ class _AudioPageBuilderState extends State<AudioPageBuilder> {
initialData: Duration.zero,
stream: durationStreamController.stream,
builder: (BuildContext _, AsyncSnapshot<Duration> data) {
return Text(
return ScaleText(
'${Constants.textDelegate.durationIndicatorBuilder(data.data!)}'
' / '
'${Constants.textDelegate.durationIndicatorBuilder(assetDuration)}',
Expand Down
2 changes: 1 addition & 1 deletion lib/src/widget/builder/image_page_builder.dart
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@
import 'package:flutter/material.dart';
import 'package:extended_image/extended_image.dart';

import 'package:wechat_assets_picker/src/constants/constants.dart';
import '../../constants/constants.dart';

class ImagePageBuilder extends StatefulWidget {
const ImagePageBuilder({
Expand Down
9 changes: 7 additions & 2 deletions lib/src/widget/builder/video_page_builder.dart
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,8 @@
import 'package:flutter/material.dart';
import 'package:video_player/video_player.dart';

import 'package:wechat_assets_picker/src/constants/constants.dart';
import '../../constants/constants.dart';
import '../scale_text.dart';

class VideoPageBuilder extends StatefulWidget {
const VideoPageBuilder({
Expand Down Expand Up @@ -136,7 +137,11 @@ class _VideoPageBuilderState extends State<VideoPageBuilder> {
@override
Widget build(BuildContext context) {
if (hasErrorWhenInitializing) {
return Center(child: Text(Constants.textDelegate.loadFailed));
return Center(
child: ScaleText(
Constants.textDelegate.loadFailed,
),
);
}
if (!hasLoaded) {
return const SizedBox.shrink();
Expand Down
Loading