Git Product home page Git Product logo

flutter-wonderous-app's Introduction

Wonderous

wonderous-banner-800w

Navigate the intersection of history, art, and culture. Wonderous will educate and entertain as you uncover information about some of the most famous structures in the world.

Built by gskinner in partnership with the Flutter team, Wonderous deliberately pushes visual fidelity, effects and transitions to showcase what Flutter is truly capable of on modern mobile hardware.

In addition to forking and reviewing the MIT licensed code available here, you can check out more information on the Wonderous Showcase Website.

App Downloads

To try the app you can download it from your favorite app store:

Installation

If you're new to Flutter the first thing you'll need is to follow the setup instructions.

Once Flutter is setup, you can use the latest stable channel:

  • flutter channel stable
  • flutter upgrade

Once on stable you're ready to run the app on your local device or simulator:

  • flutter run -d ios
  • flutter run -d android

Impeller Rendering

This app uses the new Impeller Runtime by default on iOS.

About gskinner

We build innovative digital experiences for smart clients, and we love how Flutter unleashes our creativity when building multi-platform apps. Don't hesitate to stop by our site to learn more about what we do, or check out other innovative Flutter projects we've built. We'd love to hear from you!

License

This application is released under the MIT license. You can use the code for any purpose, including commercial projects.

license

flutter-wonderous-app's People

Contributors

drown0315 avatar erisanolasheni avatar esdotdev avatar federicoviceconti avatar gskinner avatar jaredbell avatar jonahwilliams avatar kenzieschmoll avatar kevmoo avatar lycstar avatar martinoyovo avatar parlough avatar pedromassango avatar techieblossom avatar toglefritz avatar yangsfang avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

flutter-wonderous-app's Issues

Add another quality level for self-hosted Unsplash images

Currently max size is 2400, there has been a request for another size beyond that for hi-dpi tablet devices. Maybe 3600?

  • Run the unsplash_download_service fetching the new set of images
  • Upload to the dreamhost FTP for wonderous.info

[Accessibility] - Not possible to navigate back on the artifacts screen using VoiceOver

Actual behavior:

  • In the Browse Artifacts screen is not possible to select the back arrow, because it gets overlapped by the global timeline header element. You need to close the app because it seems there is no work around for this situation.
  • Same issue happens in Global Timeline screen - back arrow gets overlapped and is not accessible

Environment: iPhone 14 Pro / iOS 16.4.1 / Wonderous 2.0.13

Replication steps:
Scenario Browse Artifacts:

  1. Turn on VoiceOver
  2. Open Wonderous app
  3. Select the Great Wall
  4. Go to artifacts menu item at the bottom
  5. Select Browse Artifacts button
  6. Try to tap the back arrow button

Scenarios Global Timeline:
4.1 Go to timeline menu item at the bottom
4.2 Open Global Timeline
6.1 Try to tap the back arrow button

Expected behavior:
It should be possible to select the back arrow in Global Timeline and Browse Artifacts screens

Videos/Snapshots:

Global Timeline
Browse Artifacts

Tablet Support Polish Items

Editorial

  • On tall ratios/devices, gap between clipped image and curved text title when scrolling (animates down to close gap)
    IMG_EAE8CEA0998F-1

Menu

  • Ideally menu X is in same position as the menu open button (top left)

Illustrations

  • Clouds not scaling down or re-adjusting in smaller editorial illustration view — the scale of the clouds in the large tablet view don't fit well in ShortMode.

Collection

  • Max height + aligned to bottom reset collection button (does appear in release build).
    IMG_E0B8FE1B7EEA-1

Handle even number as gridSize in PhotoGallery

Hi,

First of all thanks for sharing this code, the app is awesome!
Actually I'm trying to implement the PhotoGallery feature. I have a 36 images that I want to display by setting the _gridSize at 6 so _imgCount fits perfectly with the number of images that I have. But I'm getting some trouble with handling the Offset returned by the _calculateCurrentOffset(double padding, Size size) method. As you can see here the Offset isn't right.

photo_2022-12-07_02-40-48

The offset seems to be correct only when the _gridSize is an odd number.
Does someone have any suggestion to get the right Offset?
Thanks.

run error

The method 'clampDouble' isn't defined for the type 'AppBackdrop'. (Documentation)

Mac Desktop version doesn't show Images or Artifacts

I just built Wonderous, and ran it successfully on my Pixel 6 device, and the iPhone 14 Pro Max emulator.
But when I built and ran it for MacOS Desktop, and you click on either the Images or Artifacts icon, it just shows the images as circle-X.
Mac OS Ventura 13.0.1, on Intel (MBP late 2017 model)
Flutter 3.7.0
Android Studio Electric Eel | 2022.1.1

Poor image filtering when using impeller on iOS

Small PNG icon images are not being filtered as nicely as they were before:

Impeller on right:
image

To view this, run the app w/ Impeller enabled, and open the "home menu". Observe any of the 3 icon buttons along the bottom of the screen:

image

Clone CO from Github throws Following Errors

Flutter Version 3.0.5
Dart. 2.17.6

When downloaded the code from Github, it shows couple of Errors.
Error 1
In "lib->logic->common->retry_image.dart" loadBuffer function throws an error.
Screenshot 2022-10-03 at 4 54 09 PM
Error 2
In "lib->logic->common->wallpaper_logic.dart" unit8List shows error.

Screenshot 2022-10-03 at 5 00 46 PM

**Fix Error 2** Hover on unit8List and import the "dart:typed_data"

Error 3
In "lib->logic->ui->common->app_backdrop.dart" clampDouble method is not recognised.

Screenshot 2022-10-03 at 5 10 58 PM

Fix Error 3

Screenshot 2022-10-03 at 5 07 07 PM

Why not use ```Wrap``` instead of ```SeparatedRow``` and ```SeparatedColumn```?

On the homemenu screen, I see that you used SeparatedColumn and SeparatedRow.

SeparatedColumn(
     separatorBuilder: () => Gap($styles.insets.sm),
     mainAxisSize: MainAxisSize.min,
     children: [
       buildRow([
         _buildGridBtn(context, wondersLogic.all[0]),
         _buildGridBtn(context, wondersLogic.all[1]),
         _buildGridBtn(context, wondersLogic.all[2]),
       ]),

I want to ask why you didn’t use Wrap, because I see that it produces the same UI.

return Wrap(
      direction: Axis.vertical,
      spacing: $styles.insets.sm,
      children: [
        Wrap(spacing: $styles.insets.sm, children: [
          _buildGridBtn(context, wondersLogic.all[0]),
          _buildGridBtn(context, wondersLogic.all[1]),
          _buildGridBtn(context, wondersLogic.all[2]),
        ]),

Compilation error with Flutter 3.10

Error

{ ...
	"message": "Undefined class 'Display'.\nTry changing the name to the name of an existing class, or creating a class with the name 'Display'.",
	"source": "dart",
	"startLineNumber": 88,
	"startColumn": 3,
	"endLineNumber": 88,
	"endColumn": 10
},{
 ...
	"message": "The getter 'displays' isn't defined for the type 'PlatformDispatcher'.\nTry importing the library that defines 'displays', correcting the name to the name of an existing getter, or defining a getter or field named 'displays'.",
	"source": "dart",
	"startLineNumber": 88,
	"startColumn": 54,
	"endLineNumber": 88,
	"endColumn": 62
}]
image

I am on main branch with

commit c2be9688db680199edc0d49b1d536ad8bf176987 (HEAD -> main, origin/main, origin/HEAD)
Author: Shawn <[email protected]>
Date:   Thu May 11 10:55:34 2023 -0600

    Fix nav-rail check

as the commit.

Flutter 3.10.3 • channel stable • https://github.com/flutter/flutter.git
Framework • revision f92f44110e (2 days ago) • 2023-06-01 18:17:33 -0500
Engine • revision 2a3401c9bb
Tools • Dart 3.0.3 • DevTools 2.23.1

Can't run app on iOS

When I tried to run the app on my actual iOS device, I got the following error and could not run this app.

Unhandled Exception: MissingPluginException(No implementation found for method getSupportedModes on channel flutter_display_mode)

I think , this error is caused by the following code.

/lib/logic/app_logic.dart

    await FlutterDisplayMode.setHighRefreshRate();

flutter_displaymode package is only available for Android.
I was able to run this app by commenting out that code.

Isn't it better to add a conditional expression so that that code can only be executed on Android?

[Android] [ui] Red artefacts while rendering collection placeholders

App version: 1.9.5 (downloaded from the Play Store)
Device: Samsung Galaxy A13
Android version: 12 (latest for this device)
One UI Core version 4.1 (latest for this device)
Google Play system update: October 1 2022 (latest for this device)

in the "Collection" page, red artefacts are visible around the borders of the svgs (or the images, not sure the format) that serve as placeholders, see the screenshot in full screen to understand:

White Box on Timeline

What is normally a white border with vertical dashed line, is rendering as a white square, only when using Impeller on a real device.

It seems to be caused by the simple:

Container(
  decoration: BoxDecoration(border: Border.all(color: borderColor))
)

image

Should be:
image

iPad support?

Hey,

This app is awesome, very fluid animations congrats! :)

Having an app for widescreen and almost square screen is always challenging, I wanted to check how you did it. Unfortunately, the app doesn't support iPad resolution, on an iPad it displays an iPhone ratio. Is it planned someday?

Issues with Web build target

We are seeing a number of issues when deploying to the web platform.

Functionality

  • Youtube thumbnail img is not displaying properly (CORS error)
  • MET images are not loading correctly (CORS error)
  • Maps plugin is not displaying "Cannot Read Properties Of Undefined (Reading ‘Maps’)"

Performance

  • Dropped frames on the main wonders carousel when switching wonders
  • Dropped frames on the Artifacts Carousel view when switching artifacts
  • Dropped frames in the Search Artifacts view when the window is expanded to full screen
  • Dropped frames in the global timeline view when scrolling

Carousel Performance on old devices

Device iPhone 6, iOS 12+, Flutter 3.7-candidate.14, Impeller enabled

  • Generally decent performance when transitioning carousel at a reasonable speed.
  • Some image popping when navigating ~3 panels away. (video 20s mark)
  • Quickly cycling carousel before images appear ultimately crashes the app once stopped — doesn't seem to matter if it's a few or many cycles after no images load. (video 00:52-1:12)
RPReplay_Final1673040336.MP4

[Curiosity] Looking for a tutorial

Hello! First of all, sorry for my bad English... I'm not sure if I'm in the right place to ask this question.

I've been a Flutter developer for a long time, and I'm always following Gskinner's projects, I consider you my inspiration and the reference of the level I want to reach.

But I have difficulties in writing codes of this level, is there any tutorial like "How to program like the Gskinner team"?

Artifact carousel collapses when screen is locked

The issue is reproducible on both platforms:

  1. Open any wonder and navigate to artifacts.
  2. Scroll through artifacts back and forth.
  3. Lock the screen.
  4. Unlock the screen - the articaft carousel collapsed. Need to scroll to recover the images.
    Screenshot_20221017-200013
    Screenshot_20221017-200016

Wonderous build error with android MainActivity.kt

I tried to test flutter with wonderous latest commit.
My flutter channel is beta and latest version.
But once I build this app with android studio, below errors are shown.
How can I fix this error?
Thank you.
e: E:\project\flutter\flutter-wonderous-app\android\app\src\main\kotlin\com\gskinner\flutter\wonders\MainActivity.kt: (5, 7): Redeclaration: MainActivity
e: E:\project\flutter\flutter-wonderous-app\android\app\src\main\kotlin\com\gskinner\wonders\MainActivity.kt: (8, 7): Redeclaration: MainActivity

FAILURE: Build failed with an exception.

  • What went wrong:
    Execution failed for task ':app:compileDebugKotlin'.

Compilation error. See log for more details

Accessibility pass

Do another accessibility pass with the latest version, address some concerns with usability on intro_screen

Minimum system requirements ?

Hello,
I tried building the app on an iPad Mini 2 with Impeller enabled.
When monitoring in dev tools I am seeing a lot of performances issues.

Is my device too old ?

Thanks

Capture d’écran 2022-12-05 à 10 49 41

Preserve route when opening foldable device

It would be great if Wonderous could stay on the same page in the app when you open a foldable device like the Fold4. It currently resets to the initial page (Great Wall wonder).

wonders depends on intl ^0.18.0, version solving failed

Because wonders depends on flutter_localizations from sdk which depends on intl 0.17.0, intl 0.17.0 is required.
So, because wonders depends on intl ^0.18.0, version solving failed.
Running "flutter pub get" in flutter-wonderous-app...
pub get failed (1; So, because wonders depends on intl ^0.18.0, version solving failed.)

Can you ask the maintainers of the wonders package and ask them to update their package to be compatible with the latest version of intl.

Artifacts/glitches during transition

When building with commit 8de361154d3c76c5f784cb887cc431084d280fb8 we're seeing artifacting/glitching when opening the home menu, or navigating to the timeline:

RPReplay_Final1661962533.1.MP4

Error launching it on iphone 14 simulator

got the following error while trying to run the project in simulator

Swift Compiler Error (Xcode): Stored properties cannot be marked potentially
unavailable with '@available'
/Users/henryhe/.pub-cache/hosted/pub.dartlang.org/flutter_inappwebview-5.4.3+7/i
os/Classes/Types/UserScript.swift:12:5


Uncategorized (Xcode): Command SwiftCompile failed with a nonzero exit code


Could not build the application for the simulator.
Error launching application on iPhone 14.

启动时报错

√ Built build\app\outputs\flutter-apk\app-debug.apk.
Installing build\app\outputs\flutter-apk\app.apk...
Error: ADB exited with exit code 1
Performing Streamed Install

adb: failed to install D:\workspace\flutter\github\flutter-wonderous-app\build\app\outputs\flutter-apk\app.apk:
Error launching application on sdk gphone64 x86 64.

Blend issues with impeller

Using the latest master, with code like:

Image(
  image: ...,
  color: Colors.black,
  colorBlendMode: BlendMode.color,
  opacity: AlwaysStoppedAnimation(0.2),
),

We are seeing blending issues:
image

Without impeller:
image

cannot build with android smart phone with android studio

First of all, thank you for your sharing source code.
I'm new to flutter, but I should study flutter accessibility API.
Fortunately, I read your blog regarding your support about accessibility with wonderous app.
So in order to study, I cloned your wonderous project.
Also I want to build the app and test with my TalkBack.
And I want to change some accessibility related code and want to learn what will be changed.
But in my windows computer, the app is not run with my android phone.
The error is below.
Generating synthetic localizations package failed with 1 error:

Exception: Make sure that the specified placeholder is defined in your arb file.
Explore details about {title}.

My flutter channel is beta and latest version.
How can I fix the issue?
Thank you.

About performance optimization

hey, this app is awesome, especially the animation experience on iOS devices.

I saw that you have optimized the performance in the last few updates. I would like to know your optimization experience, how to make the application performance better, can you share, such as how to make the animation smoother, you have encountered the first time the SKSL animation freezes Question, do you do sksl preheating? 


Looking forward to your reply

Main page looks like it stutters a bit on iPad Pro?

I was testing Wonderous on my iPad pro and it looks like maybe some frames are dropped when scrolling past images. See video below. I think it looks smoother on my iPhone. Let me know if you need more info!

iPad

RPReplay_Final1671461063.mov

iPhone

RPReplay_Final1671461271.mov

Stuttering on iOS

Hi - the app looks amazing!
One thing I noticed, is that the "text on image" section e.g "the longest man-made structure in the world" is stuttering when scrolling slowly over it, especially when scrolling up and down on it to "play" with the animation.
I tested this on an iPhone 12mini.

Scroll issues with iPhone 13

Using iPhone 13 w/ 120fps display, we are seeing some stuttering / jumping around of the native maps view when scrolling.

Hard to see in the video, but you can kinda make it out:

RPReplay_Final1663020697.MP4

Also, At 0:39 in this video, you can make out some significant stuttering in the fullscreen map view:

RPReplay_Final1663021385.MP4

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.