Merge branch 'master' into feature/blocking-v2
This commit is contained in:
commit
b6d03960e2
|
@ -27,15 +27,24 @@ apply from: "$flutterRoot/packages/flutter_tools/gradle/flutter.gradle"
|
|||
|
||||
android {
|
||||
compileSdkVersion 30
|
||||
|
||||
lintOptions {
|
||||
disable 'InvalidPackage'
|
||||
}
|
||||
|
||||
sourceSets {
|
||||
main.java.srcDirs += 'src/main/kotlin'
|
||||
}
|
||||
|
||||
lintOptions {
|
||||
disable 'InvalidPackage'
|
||||
compileOptions {
|
||||
sourceCompatibility JavaVersion.VERSION_1_8
|
||||
targetCompatibility JavaVersion.VERSION_1_8
|
||||
}
|
||||
|
||||
kotlinOptions {
|
||||
jvmTarget = '1.8'
|
||||
}
|
||||
|
||||
defaultConfig {
|
||||
applicationId "com.krawieck.lemmur"
|
||||
minSdkVersion 16
|
||||
|
|
|
@ -2,11 +2,11 @@ buildscript {
|
|||
ext.kotlin_version = '1.3.50'
|
||||
repositories {
|
||||
google()
|
||||
jcenter()
|
||||
mavenCentral()
|
||||
}
|
||||
|
||||
dependencies {
|
||||
classpath 'com.android.tools.build:gradle:3.5.0'
|
||||
classpath 'com.android.tools.build:gradle:7.0.2'
|
||||
classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
|
||||
}
|
||||
}
|
||||
|
@ -14,15 +14,13 @@ buildscript {
|
|||
allprojects {
|
||||
repositories {
|
||||
google()
|
||||
jcenter()
|
||||
mavenCentral()
|
||||
}
|
||||
}
|
||||
|
||||
rootProject.buildDir = '../build'
|
||||
subprojects {
|
||||
project.buildDir = "${rootProject.buildDir}/${project.name}"
|
||||
}
|
||||
subprojects {
|
||||
project.evaluationDependsOn(':app')
|
||||
}
|
||||
|
||||
|
|
|
@ -3,4 +3,4 @@ distributionBase=GRADLE_USER_HOME
|
|||
distributionPath=wrapper/dists
|
||||
zipStoreBase=GRADLE_USER_HOME
|
||||
zipStorePath=wrapper/dists
|
||||
distributionUrl=https\://services.gradle.org/distributions/gradle-5.6.2-all.zip
|
||||
distributionUrl=https\://services.gradle.org/distributions/gradle-7.0.2-all.zip
|
||||
|
|
|
@ -21,6 +21,6 @@
|
|||
<key>CFBundleVersion</key>
|
||||
<string>1.0</string>
|
||||
<key>MinimumOSVersion</key>
|
||||
<string>8.0</string>
|
||||
<string>9.0</string>
|
||||
</dict>
|
||||
</plist>
|
||||
|
|
|
@ -1,8 +1,5 @@
|
|||
PODS:
|
||||
- Flutter (1.0.0)
|
||||
- FMDB (2.7.5):
|
||||
- FMDB/standard (= 2.7.5)
|
||||
- FMDB/standard (2.7.5)
|
||||
- image_picker (0.0.1):
|
||||
- Flutter
|
||||
- package_info_plus (0.4.5):
|
||||
|
@ -13,9 +10,6 @@ PODS:
|
|||
- Flutter
|
||||
- shared_preferences (0.0.1):
|
||||
- Flutter
|
||||
- sqflite (0.0.2):
|
||||
- Flutter
|
||||
- FMDB (>= 2.7.5)
|
||||
- url_launcher (0.0.1):
|
||||
- Flutter
|
||||
|
||||
|
@ -26,13 +20,8 @@ DEPENDENCIES:
|
|||
- path_provider (from `.symlinks/plugins/path_provider/ios`)
|
||||
- share_plus (from `.symlinks/plugins/share_plus/ios`)
|
||||
- shared_preferences (from `.symlinks/plugins/shared_preferences/ios`)
|
||||
- sqflite (from `.symlinks/plugins/sqflite/ios`)
|
||||
- url_launcher (from `.symlinks/plugins/url_launcher/ios`)
|
||||
|
||||
SPEC REPOS:
|
||||
trunk:
|
||||
- FMDB
|
||||
|
||||
EXTERNAL SOURCES:
|
||||
Flutter:
|
||||
:path: Flutter
|
||||
|
@ -46,22 +35,18 @@ EXTERNAL SOURCES:
|
|||
:path: ".symlinks/plugins/share_plus/ios"
|
||||
shared_preferences:
|
||||
:path: ".symlinks/plugins/shared_preferences/ios"
|
||||
sqflite:
|
||||
:path: ".symlinks/plugins/sqflite/ios"
|
||||
url_launcher:
|
||||
:path: ".symlinks/plugins/url_launcher/ios"
|
||||
|
||||
SPEC CHECKSUMS:
|
||||
Flutter: 50d75fe2f02b26cc09d224853bb45737f8b3214a
|
||||
FMDB: 2ce00b547f966261cd18927a3ddb07cb6f3db82a
|
||||
image_picker: e06f7a68f000bd36f552c1847e33cda96ed31f1f
|
||||
package_info_plus: 6c92f08e1f853dc01228d6f553146438dafcd14e
|
||||
path_provider: abfe2b5c733d04e238b0d8691db0cfd63a27a93c
|
||||
share_plus: 056a1e8ac890df3e33cb503afffaf1e9b4fbae68
|
||||
shared_preferences: af6bfa751691cdc24be3045c43ec037377ada40d
|
||||
sqflite: 6d358c025f5b867b29ed92fc697fd34924e11904
|
||||
url_launcher: 6fef411d543ceb26efce54b05a0a40bfd74cbbef
|
||||
|
||||
PODFILE CHECKSUM: aafe91acc616949ddb318b77800a7f51bffa2a4c
|
||||
|
||||
COCOAPODS: 1.11.0
|
||||
COCOAPODS: 1.11.2
|
||||
|
|
|
@ -1,4 +1,3 @@
|
|||
import 'package:cached_network_image/cached_network_image.dart';
|
||||
import 'package:flutter/gestures.dart';
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:flutter_hooks/flutter_hooks.dart';
|
||||
|
@ -18,6 +17,7 @@ import '../util/intl.dart';
|
|||
import '../util/share.dart';
|
||||
import '../widgets/avatar.dart';
|
||||
import '../widgets/bottom_modal.dart';
|
||||
import '../widgets/cached_network_image.dart';
|
||||
import '../widgets/fullscreenable_image.dart';
|
||||
import '../widgets/info_table_popup.dart';
|
||||
import '../widgets/markdown_text.dart';
|
||||
|
@ -270,7 +270,7 @@ class _CommunityOverview extends StatelessWidget {
|
|||
url: community.community.banner!,
|
||||
child: CachedNetworkImage(
|
||||
imageUrl: community.community.banner!,
|
||||
errorWidget: (_, __, ___) => const SizedBox.shrink(),
|
||||
errorBuilder: (_, ___) => const SizedBox.shrink(),
|
||||
),
|
||||
),
|
||||
SafeArea(
|
||||
|
|
|
@ -1,6 +1,5 @@
|
|||
import 'dart:math' show max;
|
||||
|
||||
import 'package:cached_network_image/cached_network_image.dart';
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:flutter_hooks/flutter_hooks.dart';
|
||||
import 'package:lemmy_api_client/v3.dart';
|
||||
|
@ -11,6 +10,7 @@ import '../hooks/stores.dart';
|
|||
import '../l10n/l10n.dart';
|
||||
import '../util/goto.dart';
|
||||
import '../widgets/bottom_modal.dart';
|
||||
import '../widgets/cached_network_image.dart';
|
||||
import '../widgets/infinite_scroll.dart';
|
||||
import '../widgets/sortable_infinite_list.dart';
|
||||
import 'inbox.dart';
|
||||
|
|
|
@ -1,6 +1,5 @@
|
|||
import 'dart:math' show pi;
|
||||
|
||||
import 'package:cached_network_image/cached_network_image.dart';
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:flutter_hooks/flutter_hooks.dart';
|
||||
import 'package:lemmy_api_client/v3.dart';
|
||||
|
@ -16,6 +15,7 @@ import '../util/extensions/datetime.dart';
|
|||
import '../util/goto.dart';
|
||||
import '../util/icons.dart';
|
||||
import '../widgets/bottom_modal.dart';
|
||||
import '../widgets/cached_network_image.dart';
|
||||
import '../widgets/comment/comment.dart';
|
||||
import '../widgets/infinite_scroll.dart';
|
||||
import '../widgets/info_table_popup.dart';
|
||||
|
@ -307,7 +307,7 @@ class PrivateMessageTile extends HookWidget {
|
|||
),
|
||||
),
|
||||
),
|
||||
errorWidget: (_, __, ___) => const SizedBox.shrink(),
|
||||
errorBuilder: (_, ___) => const SizedBox.shrink(),
|
||||
),
|
||||
),
|
||||
Text(
|
||||
|
|
|
@ -1,4 +1,3 @@
|
|||
import 'package:cached_network_image/cached_network_image.dart';
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:flutter_hooks/flutter_hooks.dart';
|
||||
import 'package:lemmy_api_client/v3.dart';
|
||||
|
@ -14,6 +13,7 @@ import '../util/share.dart';
|
|||
import '../util/text_color.dart';
|
||||
import '../widgets/avatar.dart';
|
||||
import '../widgets/bottom_modal.dart';
|
||||
import '../widgets/cached_network_image.dart';
|
||||
import '../widgets/fullscreenable_image.dart';
|
||||
import '../widgets/info_table_popup.dart';
|
||||
import '../widgets/markdown_text.dart';
|
||||
|
@ -126,7 +126,7 @@ class InstancePage extends HookWidget {
|
|||
url: siteView.site.banner!,
|
||||
child: CachedNetworkImage(
|
||||
imageUrl: siteView.site.banner!,
|
||||
errorWidget: (_, __, ___) => const SizedBox.shrink(),
|
||||
errorBuilder: (_, ___) => const SizedBox.shrink(),
|
||||
),
|
||||
),
|
||||
SafeArea(
|
||||
|
@ -143,7 +143,7 @@ class InstancePage extends HookWidget {
|
|||
width: 100,
|
||||
height: 100,
|
||||
imageUrl: siteView.site.icon!,
|
||||
errorWidget: (_, __, ___) =>
|
||||
errorBuilder: (_, ___) =>
|
||||
const Icon(Icons.warning),
|
||||
),
|
||||
),
|
||||
|
|
|
@ -1,4 +1,3 @@
|
|||
import 'package:cached_network_image/cached_network_image.dart';
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:flutter_hooks/flutter_hooks.dart';
|
||||
import 'package:image_picker/image_picker.dart';
|
||||
|
@ -14,6 +13,7 @@ import '../util/icons.dart';
|
|||
import '../util/pictrs.dart';
|
||||
import '../widgets/bottom_modal.dart';
|
||||
import '../widgets/bottom_safe.dart';
|
||||
import '../widgets/cached_network_image.dart';
|
||||
import '../widgets/editor.dart';
|
||||
|
||||
/// Page for managing things like username, email, avatar etc
|
||||
|
@ -506,7 +506,7 @@ class _ImagePicker extends HookWidget {
|
|||
if (url.value != null)
|
||||
CachedNetworkImage(
|
||||
imageUrl: url.value!,
|
||||
errorWidget: (_, __, ___) => const Icon(Icons.error),
|
||||
errorBuilder: (_, ___) => const Icon(Icons.error),
|
||||
),
|
||||
],
|
||||
);
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
import 'dart:math' show max, min;
|
||||
|
||||
import 'package:cached_network_image/cached_network_image.dart';
|
||||
import 'package:extended_image/extended_image.dart';
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:flutter/services.dart';
|
||||
import 'package:flutter_hooks/flutter_hooks.dart';
|
||||
|
@ -144,7 +144,7 @@ class MediaViewPage extends HookWidget {
|
|||
: (_, __, ___) => showButtons.value = !showButtons.value,
|
||||
minScale: PhotoViewComputedScale.contained,
|
||||
initialScale: PhotoViewComputedScale.contained,
|
||||
imageProvider: CachedNetworkImageProvider(url),
|
||||
imageProvider: ExtendedNetworkImageProvider(url, cache: true),
|
||||
heroAttributes: PhotoViewHeroAttributes(tag: url),
|
||||
loadingBuilder: (context, event) =>
|
||||
const Center(child: CircularProgressIndicator()),
|
||||
|
|
|
@ -1,4 +1,3 @@
|
|||
import 'package:cached_network_image/cached_network_image.dart';
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:flutter_hooks/flutter_hooks.dart';
|
||||
import 'package:lemmy_api_client/v3.dart';
|
||||
|
@ -9,6 +8,7 @@ import '../../hooks/delayed_loading.dart';
|
|||
import '../../hooks/stores.dart';
|
||||
import '../../l10n/l10n.dart';
|
||||
import '../../stores/config_store.dart';
|
||||
import '../../widgets/cached_network_image.dart';
|
||||
import '../../widgets/fullscreenable_image.dart';
|
||||
import '../../widgets/radio_picker.dart';
|
||||
import 'add_instance.dart';
|
||||
|
@ -96,7 +96,7 @@ class AddAccountPage extends HookWidget {
|
|||
url: icon.value!,
|
||||
child: CachedNetworkImage(
|
||||
imageUrl: icon.value!,
|
||||
errorWidget: (_, __, ___) => const SizedBox.shrink(),
|
||||
errorBuilder: (_, ___) => const SizedBox.shrink(),
|
||||
),
|
||||
),
|
||||
),
|
||||
|
|
|
@ -1,4 +1,3 @@
|
|||
import 'package:cached_network_image/cached_network_image.dart';
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:flutter_hooks/flutter_hooks.dart';
|
||||
import 'package:lemmy_api_client/v3.dart';
|
||||
|
@ -6,6 +5,7 @@ import 'package:lemmy_api_client/v3.dart';
|
|||
import '../../hooks/debounce.dart';
|
||||
import '../../hooks/stores.dart';
|
||||
import '../../util/cleanup_url.dart';
|
||||
import '../../widgets/cached_network_image.dart';
|
||||
import '../../widgets/fullscreenable_image.dart';
|
||||
|
||||
/// A page that let's user add a new instance. Pops a url of the added instance
|
||||
|
@ -76,7 +76,7 @@ class AddInstancePage extends HookWidget {
|
|||
url: icon.value!,
|
||||
child: CachedNetworkImage(
|
||||
imageUrl: icon.value!,
|
||||
errorWidget: (_, __, ___) => const SizedBox.shrink(),
|
||||
errorBuilder: (_, ___) => const SizedBox.shrink(),
|
||||
),
|
||||
))
|
||||
else if (isSite.value == false)
|
||||
|
|
|
@ -1,8 +1,8 @@
|
|||
import 'package:cached_network_image/cached_network_image.dart';
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:flutter_hooks/flutter_hooks.dart';
|
||||
|
||||
import '../hooks/stores.dart';
|
||||
import 'cached_network_image.dart';
|
||||
|
||||
/// User's avatar. Respects the `showAvatars` setting from configStore
|
||||
/// If passed url is null, a blank box is displayed to prevent weird indents
|
||||
|
@ -50,7 +50,7 @@ class Avatar extends HookWidget {
|
|||
width: radius * 2,
|
||||
imageUrl: imageUrl,
|
||||
fit: BoxFit.cover,
|
||||
errorWidget: (_, __, ___) => blankWidget,
|
||||
errorBuilder: (_, __) => blankWidget,
|
||||
),
|
||||
);
|
||||
}
|
||||
|
|
|
@ -0,0 +1,68 @@
|
|||
import 'package:extended_image/extended_image.dart';
|
||||
import 'package:flutter/material.dart';
|
||||
|
||||
typedef ImageBuilder = Widget Function(
|
||||
BuildContext context, ImageProvider imageProvider);
|
||||
|
||||
typedef LoadingBuilder = Widget Function(
|
||||
BuildContext context, ImageChunkEvent? progress);
|
||||
|
||||
typedef ErrorBuilder = Widget Function(
|
||||
BuildContext context, Object? lastException);
|
||||
|
||||
extension Progress on ImageChunkEvent {
|
||||
double? get progress {
|
||||
if (expectedTotalBytes == null ||
|
||||
cumulativeBytesLoaded > expectedTotalBytes!) {
|
||||
return null;
|
||||
}
|
||||
|
||||
return cumulativeBytesLoaded / expectedTotalBytes!;
|
||||
}
|
||||
}
|
||||
|
||||
class CachedNetworkImage extends StatelessWidget {
|
||||
final String imageUrl;
|
||||
final double? height;
|
||||
final double? width;
|
||||
final BoxFit? fit;
|
||||
final bool cache;
|
||||
|
||||
final ErrorBuilder? errorBuilder;
|
||||
final LoadingBuilder? loadingBuilder;
|
||||
final ImageBuilder? imageBuilder;
|
||||
|
||||
const CachedNetworkImage({
|
||||
required this.imageUrl,
|
||||
this.errorBuilder,
|
||||
this.loadingBuilder,
|
||||
this.imageBuilder,
|
||||
this.height,
|
||||
this.width,
|
||||
this.fit,
|
||||
this.cache = true,
|
||||
Key? key,
|
||||
}) : super(key: key);
|
||||
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
return ExtendedImage.network(
|
||||
imageUrl,
|
||||
height: height,
|
||||
width: width,
|
||||
fit: fit,
|
||||
cache: cache,
|
||||
loadStateChanged: (state) {
|
||||
switch (state.extendedImageLoadState) {
|
||||
case LoadState.loading:
|
||||
return loadingBuilder?.call(context, state.loadingProgress) ??
|
||||
SizedBox(height: height, width: width);
|
||||
case LoadState.completed:
|
||||
return imageBuilder?.call(context, state.imageProvider);
|
||||
case LoadState.failed:
|
||||
return errorBuilder?.call(context, state.lastException);
|
||||
}
|
||||
},
|
||||
);
|
||||
}
|
||||
}
|
|
@ -1,11 +1,11 @@
|
|||
import 'dart:io';
|
||||
|
||||
import 'package:cached_network_image/cached_network_image.dart';
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:flutter_markdown/flutter_markdown.dart';
|
||||
import 'package:markdown/markdown.dart' as md;
|
||||
|
||||
import '../url_launcher.dart';
|
||||
import 'cached_network_image.dart';
|
||||
import 'fullscreenable_image.dart';
|
||||
|
||||
/// A Markdown renderer with link/image handling
|
||||
|
@ -52,7 +52,7 @@ class MarkdownText extends StatelessWidget {
|
|||
url: uri.toString(),
|
||||
child: CachedNetworkImage(
|
||||
imageUrl: uri.toString(),
|
||||
errorWidget: (context, url, error) => Row(
|
||||
errorBuilder: (context, error) => Row(
|
||||
children: [
|
||||
const Icon(Icons.warning),
|
||||
Text("couldn't load image, ${error.toString()}")
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
import 'package:cached_network_image/cached_network_image.dart';
|
||||
import 'package:flutter/material.dart';
|
||||
|
||||
import '../../util/observer_consumers.dart';
|
||||
import '../cached_network_image.dart';
|
||||
import '../fullscreenable_image.dart';
|
||||
import 'post_store.dart';
|
||||
|
||||
|
@ -22,9 +22,9 @@ class PostMedia extends StatelessWidget {
|
|||
url: url,
|
||||
child: CachedNetworkImage(
|
||||
imageUrl: url,
|
||||
errorWidget: (_, __, ___) => const Icon(Icons.warning),
|
||||
progressIndicatorBuilder: (context, url, progress) =>
|
||||
CircularProgressIndicator.adaptive(value: progress.progress),
|
||||
errorBuilder: (_, ___) => const Icon(Icons.warning),
|
||||
loadingBuilder: (context, progress) =>
|
||||
CircularProgressIndicator.adaptive(value: progress?.progress),
|
||||
),
|
||||
);
|
||||
},
|
||||
|
|
|
@ -1,8 +1,8 @@
|
|||
import 'package:cached_network_image/cached_network_image.dart';
|
||||
import 'package:flutter/material.dart';
|
||||
|
||||
import '../../url_launcher.dart';
|
||||
import '../../util/observer_consumers.dart';
|
||||
import '../cached_network_image.dart';
|
||||
import 'post_store.dart';
|
||||
|
||||
class PostTitle extends StatelessWidget {
|
||||
|
@ -45,7 +45,7 @@ class PostTitle extends StatelessWidget {
|
|||
width: 70,
|
||||
height: 70,
|
||||
fit: BoxFit.cover,
|
||||
errorWidget: (context, url, error) =>
|
||||
errorBuilder: (context, error) =>
|
||||
Text(error.toString()),
|
||||
),
|
||||
),
|
||||
|
|
|
@ -1,4 +1,3 @@
|
|||
import 'package:cached_network_image/cached_network_image.dart';
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:flutter_hooks/flutter_hooks.dart';
|
||||
import 'package:intl/intl.dart';
|
||||
|
@ -14,6 +13,7 @@ import '../util/extensions/datetime.dart';
|
|||
import '../util/goto.dart';
|
||||
import '../util/text_color.dart';
|
||||
import 'avatar.dart';
|
||||
import 'cached_network_image.dart';
|
||||
import 'fullscreenable_image.dart';
|
||||
import 'markdown_text.dart';
|
||||
import 'sortable_infinite_list.dart';
|
||||
|
@ -147,7 +147,7 @@ class _UserOverview extends HookWidget {
|
|||
url: userView.person.banner!,
|
||||
child: CachedNetworkImage(
|
||||
imageUrl: userView.person.banner!,
|
||||
errorWidget: (_, __, ___) => const SizedBox.shrink(),
|
||||
errorBuilder: (_, ___) => const SizedBox.shrink(),
|
||||
),
|
||||
)
|
||||
else
|
||||
|
@ -208,7 +208,7 @@ class _UserOverview extends HookWidget {
|
|||
url: userView.person.avatar!,
|
||||
child: CachedNetworkImage(
|
||||
imageUrl: userView.person.avatar!,
|
||||
errorWidget: (_, __, ___) => const SizedBox.shrink(),
|
||||
errorBuilder: (_, ___) => const SizedBox.shrink(),
|
||||
),
|
||||
),
|
||||
),
|
||||
|
|
100
pubspec.lock
100
pubspec.lock
|
@ -99,27 +99,6 @@ packages:
|
|||
url: "https://pub.dartlang.org"
|
||||
source: hosted
|
||||
version: "8.1.2"
|
||||
cached_network_image:
|
||||
dependency: "direct main"
|
||||
description:
|
||||
name: cached_network_image
|
||||
url: "https://pub.dartlang.org"
|
||||
source: hosted
|
||||
version: "3.1.0"
|
||||
cached_network_image_platform_interface:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: cached_network_image_platform_interface
|
||||
url: "https://pub.dartlang.org"
|
||||
source: hosted
|
||||
version: "1.0.0"
|
||||
cached_network_image_web:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: cached_network_image_web
|
||||
url: "https://pub.dartlang.org"
|
||||
source: hosted
|
||||
version: "1.0.1"
|
||||
characters:
|
||||
dependency: transitive
|
||||
description:
|
||||
|
@ -204,6 +183,20 @@ packages:
|
|||
url: "https://pub.dartlang.org"
|
||||
source: hosted
|
||||
version: "2.1.0"
|
||||
extended_image:
|
||||
dependency: "direct main"
|
||||
description:
|
||||
name: extended_image
|
||||
url: "https://pub.dartlang.org"
|
||||
source: hosted
|
||||
version: "5.1.2"
|
||||
extended_image_library:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: extended_image_library
|
||||
url: "https://pub.dartlang.org"
|
||||
source: hosted
|
||||
version: "3.1.0"
|
||||
fake_async:
|
||||
dependency: transitive
|
||||
description:
|
||||
|
@ -237,20 +230,6 @@ packages:
|
|||
description: flutter
|
||||
source: sdk
|
||||
version: "0.0.0"
|
||||
flutter_blurhash:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: flutter_blurhash
|
||||
url: "https://pub.dartlang.org"
|
||||
source: hosted
|
||||
version: "0.6.0"
|
||||
flutter_cache_manager:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: flutter_cache_manager
|
||||
url: "https://pub.dartlang.org"
|
||||
source: hosted
|
||||
version: "3.1.2"
|
||||
flutter_hooks:
|
||||
dependency: "direct main"
|
||||
description:
|
||||
|
@ -357,6 +336,13 @@ packages:
|
|||
url: "https://pub.dartlang.org"
|
||||
source: hosted
|
||||
version: "0.13.3"
|
||||
http_client_helper:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: http_client_helper
|
||||
url: "https://pub.dartlang.org"
|
||||
source: hosted
|
||||
version: "2.0.2"
|
||||
http_multi_server:
|
||||
dependency: transitive
|
||||
description:
|
||||
|
@ -525,13 +511,6 @@ packages:
|
|||
url: "https://pub.dartlang.org"
|
||||
source: hosted
|
||||
version: "1.0.0"
|
||||
octo_image:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: octo_image
|
||||
url: "https://pub.dartlang.org"
|
||||
source: hosted
|
||||
version: "1.0.0+1"
|
||||
package_config:
|
||||
dependency: transitive
|
||||
description:
|
||||
|
@ -695,13 +674,6 @@ packages:
|
|||
url: "https://pub.dartlang.org"
|
||||
source: hosted
|
||||
version: "1.0.0"
|
||||
rxdart:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: rxdart
|
||||
url: "https://pub.dartlang.org"
|
||||
source: hosted
|
||||
version: "0.27.2"
|
||||
share_plus:
|
||||
dependency: "direct main"
|
||||
description:
|
||||
|
@ -826,20 +798,6 @@ packages:
|
|||
url: "https://pub.dartlang.org"
|
||||
source: hosted
|
||||
version: "1.8.1"
|
||||
sqflite:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: sqflite
|
||||
url: "https://pub.dartlang.org"
|
||||
source: hosted
|
||||
version: "2.0.0+4"
|
||||
sqflite_common:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: sqflite_common
|
||||
url: "https://pub.dartlang.org"
|
||||
source: hosted
|
||||
version: "2.0.1+1"
|
||||
stack_trace:
|
||||
dependency: transitive
|
||||
description:
|
||||
|
@ -868,13 +826,6 @@ packages:
|
|||
url: "https://pub.dartlang.org"
|
||||
source: hosted
|
||||
version: "1.1.0"
|
||||
synchronized:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: synchronized
|
||||
url: "https://pub.dartlang.org"
|
||||
source: hosted
|
||||
version: "3.0.0"
|
||||
term_glyph:
|
||||
dependency: transitive
|
||||
description:
|
||||
|
@ -952,13 +903,6 @@ packages:
|
|||
url: "https://pub.dartlang.org"
|
||||
source: hosted
|
||||
version: "2.0.2"
|
||||
uuid:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: uuid
|
||||
url: "https://pub.dartlang.org"
|
||||
source: hosted
|
||||
version: "3.0.4"
|
||||
vector_math:
|
||||
dependency: transitive
|
||||
description:
|
||||
|
@ -1010,4 +954,4 @@ packages:
|
|||
version: "3.1.0"
|
||||
sdks:
|
||||
dart: ">=2.14.0 <3.0.0"
|
||||
flutter: ">=2.0.0"
|
||||
flutter: ">=2.5.0"
|
||||
|
|
|
@ -30,7 +30,6 @@ dependencies:
|
|||
ref: bugfix/flutter-2.5-update
|
||||
markdown: ^4.0.0
|
||||
flutter_markdown: ^0.6.1
|
||||
cached_network_image: ^3.0.0
|
||||
modal_bottom_sheet: ^2.0.0
|
||||
|
||||
# native
|
||||
|
@ -39,6 +38,7 @@ dependencies:
|
|||
shared_preferences: ^2.0.5
|
||||
package_info_plus: ^1.0.6
|
||||
image_picker: ^0.8.4
|
||||
extended_image: ^5.1.2
|
||||
|
||||
# state management
|
||||
flutter_hooks: ^0.18.0
|
||||
|
|
Loading…
Reference in New Issue