Merge branch 'master' into feature-v2-polish
# Conflicts: # lib/common_libs.dart
This commit is contained in:
commit
19985ca659
@ -12,9 +12,9 @@
|
||||
<activity
|
||||
android:name=".MainActivity"
|
||||
android:exported="true"
|
||||
android:configChanges="orientation|keyboardHidden|keyboard|screenSize|locale|layoutDirection|fontScale|screenLayout|density|uiMode"
|
||||
android:launchMode="singleTop"
|
||||
android:theme="@style/LaunchTheme"
|
||||
android:configChanges="orientation|keyboardHidden|keyboard|screenSize|smallestScreenSize|locale|layoutDirection|fontScale|screenLayout|density|uiMode"
|
||||
android:hardwareAccelerated="true"
|
||||
android:windowSoftInputMode="adjustResize">
|
||||
<!-- Specifies an Android theme to apply to this Activity as soon as
|
||||
|
@ -1,6 +0,0 @@
|
||||
package com.gskinner.flutter.flutter_wonders_app
|
||||
|
||||
import io.flutter.embedding.android.FlutterActivity
|
||||
|
||||
class MainActivity: FlutterActivity() {
|
||||
}
|
@ -1,15 +0,0 @@
|
||||
package com.gskinner.flutter.wonders
|
||||
|
||||
import android.os.Bundle
|
||||
import com.google.android.gms.maps.MapsInitializer
|
||||
import com.google.android.gms.maps.OnMapsSdkInitializedCallback
|
||||
import io.flutter.embedding.android.FlutterActivity
|
||||
|
||||
class MainActivity : FlutterActivity(), OnMapsSdkInitializedCallback {
|
||||
override fun onCreate(savedInstanceState: Bundle?) {
|
||||
super.onCreate(savedInstanceState)
|
||||
MapsInitializer.initialize(applicationContext, MapsInitializer.Renderer.LATEST, this)
|
||||
}
|
||||
|
||||
override fun onMapsSdkInitialized(p0: MapsInitializer.Renderer) {}
|
||||
}
|
@ -5,9 +5,9 @@ import 'dart:collection';
|
||||
import 'dart:convert';
|
||||
import 'dart:io';
|
||||
|
||||
import 'package:http/http.dart' as http;
|
||||
import 'package:path_provider/path_provider.dart';
|
||||
import 'package:wonders/common_libs.dart';
|
||||
import 'package:http/http.dart' as http;
|
||||
import 'package:wonders/logic/data/wonder_data.dart';
|
||||
import 'package:wonders/logic/data/wonders_data/search/search_data.dart';
|
||||
|
||||
|
@ -7,6 +7,7 @@ export 'package:extra_alignments/extra_alignments.dart';
|
||||
export 'package:flextras/flextras.dart';
|
||||
export 'package:flutter/material.dart';
|
||||
export 'package:flutter/services.dart';
|
||||
export 'package:flutter_animate/flutter_animate.dart';
|
||||
export 'package:gap/gap.dart';
|
||||
export 'package:get_it/get_it.dart';
|
||||
export 'package:get_it_mixin/get_it_mixin.dart';
|
||||
@ -22,8 +23,7 @@ export 'package:wonders/logic/settings_logic.dart';
|
||||
export 'package:wonders/main.dart';
|
||||
export 'package:wonders/router.dart';
|
||||
export 'package:wonders/styles/styles.dart';
|
||||
export 'package:wonders/ui/common/controls/app_image.dart';
|
||||
export 'package:wonders/ui/common/controls/buttons.dart';
|
||||
export 'package:wonders/ui/common/controls/circle_buttons.dart';
|
||||
export 'package:wonders/ui/common/controls/scroll_decorator.dart';
|
||||
export 'package:wonders/ui/common/controls/app_image.dart';
|
||||
export 'package:flutter_animate/flutter_animate.dart';
|
||||
|
@ -12,7 +12,7 @@ class AppLogic {
|
||||
/// The router will use this to prevent redirects while bootstrapping.
|
||||
bool isBootstrapComplete = false;
|
||||
|
||||
bool get isDesktopOrTablet => PlatformInfo.isDesktopOrWeb || deviceSize.shortestSide > 500;
|
||||
bool get isDesktopOrTablet => PlatformInfo.isDesktopOrWeb || deviceSize.shortestSide > 480;
|
||||
|
||||
/// Support portrait and landscape on desktop, web and tablets. Stick to portrait for phones.
|
||||
/// A return value of null indicated both orientations are supported.
|
||||
@ -26,6 +26,7 @@ class AppLogic {
|
||||
/// Initialize the app and all main actors.
|
||||
/// Loads settings, sets up services etc.
|
||||
Future<void> bootstrap() async {
|
||||
debugPrint('bootstrap app, deviceSize: $deviceSize, isTablet: $isDesktopOrTablet');
|
||||
// Default error handler
|
||||
FlutterError.onError = _handleFlutterError;
|
||||
|
||||
|
@ -111,7 +111,6 @@ class _WonderEditorialScreenState extends State<WonderEditorialScreen> {
|
||||
primary: false,
|
||||
controller: _scroller,
|
||||
scrollBehavior: ScrollConfiguration.of(context).copyWith(),
|
||||
cacheExtent: 1000,
|
||||
slivers: [
|
||||
/// Invisible padding at the top of the list, so the illustration shows through the btm
|
||||
SliverToBoxAdapter(
|
||||
|
@ -134,7 +134,7 @@ class _ScrollingContent extends StatelessWidget {
|
||||
buildText(data.locationInfo2),
|
||||
]),
|
||||
Gap($styles.insets.md),
|
||||
_MapsThumbnail(data, height: 200),
|
||||
_MapsThumbnail(data, height: 400),
|
||||
Gap($styles.insets.md),
|
||||
..._contentSection([Center(child: buildHiddenCollectible(slot: 3))]),
|
||||
]),
|
||||
|
@ -53,21 +53,23 @@ class AboutDialogContent extends StatelessWidget {
|
||||
'{gskinnerUrl}': [$strings.homeMenuAboutGskinner, 'https://gskinner.com/flutter'],
|
||||
}),
|
||||
...buildSpan('\n\n'),
|
||||
...buildSpan($strings.homeMenuAboutLearn('{wonderousUrl}'), linkSupplants: {
|
||||
'{wonderousUrl}': [$strings.homeMenuAboutApp, 'https://wonderous.app'],
|
||||
...buildSpan('${$strings.homeMenuAboutLearn('{wonderousUrl}')} ', linkSupplants: {
|
||||
'{wonderousUrl}': [$strings.homeMenuAboutApp, 'https://flutter.gskinner.com/wonderous/'],
|
||||
}),
|
||||
...buildSpan('\n\n'),
|
||||
...buildSpan($strings.homeMenuAboutSource('{githubUrl}'), linkSupplants: {
|
||||
'{githubUrl}': [$strings.homeMenuAboutRepo, 'https://github.com/gskinnerTeam/flutter-wonderous-app'],
|
||||
'{githubUrl}': [($strings.homeMenuAboutRepo), 'https://github.com/gskinnerTeam/flutter-wonderous-app'],
|
||||
}),
|
||||
...buildSpan(' As explained in our {privacyUrl} we do no collect any personal information.',
|
||||
linkSupplants: {
|
||||
'{privacyUrl}': ['Privacy Policy', 'https://flutter.gskinner.com/wonderous/privacy/'],
|
||||
}),
|
||||
...buildSpan('\n\n'),
|
||||
...buildSpan($strings.homeMenuAboutPublic('{metUrl}'), linkSupplants: {
|
||||
...buildSpan('${$strings.homeMenuAboutPublic('{metUrl}')} ', linkSupplants: {
|
||||
'{metUrl}': [
|
||||
$strings.homeMenuAboutMet,
|
||||
'https://www.metmuseum.org/about-the-met/policies-and-documents/open-access'
|
||||
],
|
||||
}),
|
||||
...buildSpan('\n\n'),
|
||||
...buildSpan($strings.homeMenuAboutPhotography('{unsplashUrl}'), linkSupplants: {
|
||||
'{unsplashUrl}': [$strings.homeMenuAboutUnsplash, 'https://unsplash.com/@gskinner/collections'],
|
||||
}),
|
||||
|
@ -13,6 +13,8 @@ class HomeMenu extends StatelessWidget {
|
||||
|
||||
void _handleAboutPressed(BuildContext context) async {
|
||||
PackageInfo packageInfo = await PackageInfo.fromPlatform();
|
||||
// ignore: use_build_context_synchronously
|
||||
if (!context.mounted) return;
|
||||
showAboutDialog(
|
||||
context: context,
|
||||
applicationName: $strings.appName,
|
||||
|
@ -120,12 +120,11 @@ class _TabBtn extends StatelessWidget {
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
bool selected = tabController.index == index;
|
||||
|
||||
final MaterialLocalizations localizations = MaterialLocalizations.of(context);
|
||||
final iconImgPath = '${ImagePaths.common}/tab-$iconImg${selected ? '-active' : ''}.png';
|
||||
String tabLabel = localizations.tabLabel(tabIndex: index + 1, tabCount: tabController.length);
|
||||
tabLabel = '$label: $tabLabel';
|
||||
final double btnWidth = (context.widthPx / 6).clamp(70, 120);
|
||||
final double btnWidth = (context.widthPx / 6).clamp(50, 120);
|
||||
return MergeSemantics(
|
||||
child: Semantics(
|
||||
selected: selected,
|
||||
|
@ -87,7 +87,7 @@ class _IllustrationPieceState extends State<IllustrationPiece> {
|
||||
final config = wonderBuilder.widget.config;
|
||||
Widget img = Image.asset(imgPath, opacity: anim, fit: BoxFit.fitHeight);
|
||||
// Add overflow box so image doesn't get clipped as we translate it around
|
||||
img = OverflowBox(maxWidth: 2000, child: img);
|
||||
img = OverflowBox(maxWidth: 2500, child: img);
|
||||
|
||||
final double introZoom = (widget.initialScale - 1) * (1 - curvedAnim);
|
||||
|
||||
|
@ -1,10 +1,10 @@
|
||||
// This is a generated file; do not edit or check into version control.
|
||||
FLUTTER_ROOT=C:\_dev\sdks\flutter
|
||||
FLUTTER_APPLICATION_PATH=C:\_dev\gskinner\flutter_wonders_app
|
||||
FLUTTER_ROOT=/Users/shawn/Dev/flutter
|
||||
FLUTTER_APPLICATION_PATH=/Users/shawn/Dev/gskinner/flutter-wonders-app
|
||||
COCOAPODS_PARALLEL_CODE_SIGN=true
|
||||
FLUTTER_BUILD_DIR=build
|
||||
FLUTTER_BUILD_NAME=1.9.7
|
||||
FLUTTER_BUILD_NUMBER=1.9.7
|
||||
FLUTTER_BUILD_NAME=2.0.3
|
||||
FLUTTER_BUILD_NUMBER=2.0.3
|
||||
DART_OBFUSCATION=false
|
||||
TRACK_WIDGET_CREATION=true
|
||||
TREE_SHAKE_ICONS=false
|
||||
|
@ -1,11 +1,11 @@
|
||||
#!/bin/sh
|
||||
# This is a generated file; do not edit or check into version control.
|
||||
export "FLUTTER_ROOT=C:\_dev\sdks\flutter"
|
||||
export "FLUTTER_APPLICATION_PATH=C:\_dev\gskinner\flutter_wonders_app"
|
||||
export "FLUTTER_ROOT=/Users/shawn/Dev/flutter"
|
||||
export "FLUTTER_APPLICATION_PATH=/Users/shawn/Dev/gskinner/flutter-wonders-app"
|
||||
export "COCOAPODS_PARALLEL_CODE_SIGN=true"
|
||||
export "FLUTTER_BUILD_DIR=build"
|
||||
export "FLUTTER_BUILD_NAME=1.9.7"
|
||||
export "FLUTTER_BUILD_NUMBER=1.9.7"
|
||||
export "FLUTTER_BUILD_NAME=2.0.3"
|
||||
export "FLUTTER_BUILD_NUMBER=2.0.3"
|
||||
export "DART_OBFUSCATION=false"
|
||||
export "TRACK_WIDGET_CREATION=true"
|
||||
export "TREE_SHAKE_ICONS=false"
|
||||
|
16
pubspec.lock
16
pubspec.lock
@ -664,10 +664,10 @@ packages:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: matcher
|
||||
sha256: "16db949ceee371e9b99d22f88fa3a73c4e59fd0afed0bd25fc336eb76c198b72"
|
||||
sha256: c94db23593b89766cda57aab9ac311e3616cf87c6fa4e9749df032f66f30dcb8
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "0.12.13"
|
||||
version: "0.12.14"
|
||||
material_color_utilities:
|
||||
dependency: transitive
|
||||
description:
|
||||
@ -768,10 +768,10 @@ packages:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: path
|
||||
sha256: db9d4f58c908a4ba5953fcee2ae317c94889433e5024c27ce74a37f94267945b
|
||||
sha256: "8829d8a55c13fc0e37127c29fedf290c102f4e40ae94ada574091fe0ff96c917"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "1.8.2"
|
||||
version: "1.8.3"
|
||||
path_drawing:
|
||||
dependency: transitive
|
||||
description:
|
||||
@ -1149,10 +1149,10 @@ packages:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: string_scanner
|
||||
sha256: "862015c5db1f3f3c4ea3b94dc2490363a84262994b88902315ed74be1155612f"
|
||||
sha256: "556692adab6cfa87322a115640c11f13cb77b3f076ddcc5d6ae3c20242bedcde"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "1.1.1"
|
||||
version: "1.2.0"
|
||||
sync_http:
|
||||
dependency: transitive
|
||||
description:
|
||||
@ -1173,10 +1173,10 @@ packages:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: test_api
|
||||
sha256: c9aba3b3dbfe8878845dfab5fa096eb8de7b62231baeeb1cea8e3ee81ca8c6d8
|
||||
sha256: c9282698e2982b6c3817037554e52f99d4daba493e8028f8112a83d68ccd0b12
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "0.4.15"
|
||||
version: "0.4.17"
|
||||
timing:
|
||||
dependency: transitive
|
||||
description:
|
||||
|
@ -1,7 +1,7 @@
|
||||
name: wonders
|
||||
description: Explore the famous wonders of the world.
|
||||
publish_to: "none"
|
||||
version: 2.0.2
|
||||
version: 2.0.3
|
||||
|
||||
environment:
|
||||
sdk: ">=2.17.0 <3.0.0"
|
||||
|
@ -1,6 +1,9 @@
|
||||
# 2.0.0
|
||||
- Add support for widescreen tablet devices
|
||||
- Various polish and improvements
|
||||
# 2.0.3
|
||||
- Add support for landscape tablet devices
|
||||
- Various improvements / polish
|
||||
- Add privacy policy link
|
||||
- Fix for rendering issues on Timeline / Editorial
|
||||
- Uses Flutter 3.7 Candidate 5
|
||||
|
||||
# 1.9.7
|
||||
- Updated impeller version
|
||||
|
Loading…
x
Reference in New Issue
Block a user