A collection of pixel-perfect iOS-styled components and properties for Flutter, following the official guidelines.

Related tags

Widgets cupertinew
Overview

cupertinew

style: very good analysis License: MIT

⚠️ Experimental and work in progress ⚠️

A collection of pixel-perfect iOS-styled components and properties for Flutter, following the official guidelines.

By Jeroen Meijer and Reuben Turner.

About the Cupertinew project

Last updated: 2021-09-28

Reasoning

Cupertinew is a Flutter project that spawned out of a desire to create a set of pixel-perfect iOS-styled components and properties for Flutter.

While support for widgets following Material Design is absolutely stellar and offers a lot of flexibility, we feel like the current iOS component support in Flutter is severely lacking in some parts, ranging from components and scaffolding that have been available since iOS 13 (which is 2 versions behind at the time of writing) that still have not been added, existing components being out of date, and navigation paradigms that are either completely unavailable or are implemented in a package (on pub.dev) with poor code quality or support.

Goals

Our goals are therefore to start creating iOS components and features that are indestinguishable from their native counterparts, allowing all Flutter devs, both new and old, to be able to create Flutter applications that look and feel like native iOS apps.

There are some examples of iOS-styled Flutter apps, such as the official Veggie Seasons sample app. However, the components used are prodominantly custom to the project, and are not available in the official Flutter SDK. Additionally, most of the components are not pixel-perfect, and feel (sometimes heavily) outdated.

We want to help out in creating a better iOS-feeling experience for Flutter developers. We love Dart, we love Flutter, we love iOS, and we would especially love to be able to combine the best of all these in a way that is easy to use, and that is not only pixel-perfect, but also maintainable, and well tested.

But why not just contribute to the official Flutter SDK?

That is definitely our end goal, but we feel that the current Flutter SDK is not the best place to start.

At this point, we only have some ideas, ambitions and short-term plans, and this whole project spawned out of the fact that we were simply missing some components. We need time to gather our thoughts and get a plan in place, and we need to get the community involved.

First and foremost, we would like to get our goals aligned, gather data and feedback, get a group of people together, and start working on the project.

Roadmap

Our current roadmap is extremely rough and we are working on it -- the project only just started, after all.

In the meantime, please have a look at the project board and issue #1 for more details.

How can I contribute?

First off, thank you so much for asking! ❤️

Since we are still working out the details, we would like to ask you to hold off on contributing to the project until we have a more solid roadmap. Please check back here in the future. Your patience and excitement is appreciated!

Comments
  • chore: prepare for initial pub release

    chore: prepare for initial pub release

    Description

    This PR prepares for the initial pub release by adding a license and fixing other pana related issues.

    Type of Change

    • [ ] ✨ New feature (non-breaking change which adds functionality)
    • [ ] 🛠️ Bug fix (non-breaking change which fixes an issue)
    • [ ] ❌ Breaking change (fix or feature that would cause existing functionality to change)
    • [ ] 🧹 Code refactor
    • [ ] ✅ Build configuration change
    • [ ] 📝 Documentation
    • [x] 🗑️ Chore
    chore 
    opened by jeroen-meijer 1
  • chore: rename project to `cupertino_plus`

    chore: rename project to `cupertino_plus`

    EDIT: After a public poll and lengthy internal discussion, we have settled on cupertino_plus as the new name for this package.

    Task name

    rename to either loyola or san_jose

    Description

    Since "Cupertinew" wasn't intended to be this project's permanent name, I propose that we rename it to one of the following:

    1. loyola
    2. san_jose

    Both are cities that are adjacent to the city of Cupertino. Since the cupertino name itself is taken, and since our project is adjacent to cupertino, I think it is appropriate that we use the name of a city adjacent to the city of Cupertino.

    Other comments

    No response

    proj chore 
    opened by GroovinChip 1
  • code refactor: theme updates

    code refactor: theme updates

    This PR makes a number of changes to the way theming is handled for cupertino_plus:

    • Overhaul CupertinoPlusTheme widget
      • Now takes a single CupertinoPlusThemeData argument
      • Removes the maybeOf function
    • Overhaul CupertinoPlusThemeData class
      • Now uses factory constructors
      • Adds Brightness property
      • Adds debugFillProperties
    • Removes unnecessary icons constructor
    • Adds 100% test coverage for all theme-related classes

    Description

    Type of Change

    • [ ] ✨ New feature (non-breaking change which adds functionality)
    • [ ] 🛠️ Bug fix (non-breaking change which fixes an issue)
    • [X] ❌ Breaking change (fix or feature that would cause existing functionality to change)
    • [X] 🧹 Code refactor
    • [ ] ✅ Build configuration change
    • [ ] 📝 Documentation
    • [ ] 🗑️ Chore
    opened by GroovinChip 0
  • chore: Update lockfile with new version

    chore: Update lockfile with new version

    Description

    Type of Change

    • [ ] ✨ New feature (non-breaking change which adds functionality)
    • [ ] 🛠️ Bug fix (non-breaking change which fixes an issue)
    • [ ] ❌ Breaking change (fix or feature that would cause existing functionality to change)
    • [ ] 🧹 Code refactor
    • [ ] ✅ Build configuration change
    • [ ] 📝 Documentation
    • [X] 🗑️ Chore
    opened by GroovinChip 0
  • docs: add badge and links in README

    docs: add badge and links in README

    Description

    • docs: add missing badge and links in README

    Type of Change

    • [ ] ✨ New feature (non-breaking change which adds functionality)
    • [ ] 🛠️ Bug fix (non-breaking change which fixes an issue)
    • [ ] ❌ Breaking change (fix or feature that would cause existing functionality to change)
    • [ ] 🧹 Code refactor
    • [ ] ✅ Build configuration change
    • [x] 📝 Documentation
    • [ ] 🗑️ Chore
    opened by jeroen-meijer 0
  • chore: rename project to cupertino_plus

    chore: rename project to cupertino_plus

    Description

    This PR renames the project to Cupertino Plus (cupertino_plus) by changing every instance of "cupertinew" to the appropriately cased/spaced version of "cupertino_plus".

    Closes #5.

    Type of Change

    • [ ] ✨ New feature (non-breaking change which adds functionality)
    • [ ] 🛠️ Bug fix (non-breaking change which fixes an issue)
    • [ ] ❌ Breaking change (fix or feature that would cause existing functionality to change)
    • [ ] 🧹 Code refactor
    • [ ] ✅ Build configuration change
    • [ ] 📝 Documentation
    • [x] 🗑️ Chore
    proj chore 
    opened by jeroen-meijer 0
  • feat: create common theming system

    feat: create common theming system

    Common Theming System

    Documentation URL

    Description

    In order to create common theming consistency and customizability for iOS (+ iPadOS) and macOS components, it is in our best interest to create a theme system (similar to Flutter's ThemeData and friends) to be able to create a consistent and native-feeling experience across platforms.

    Work has already begun on this system. The current implementation can be found here and the most recent development can be tracked in this branch (TBD).

    Other comments

    No response

    feat theming 
    opened by jeroen-meijer 2
  • [epic] feat(component): grouped list tiles

    [epic] feat(component): grouped list tiles

    Grouped List Tiles

    Documentation URL

    Tables - Views - iOS - Human Interface Guidelines - Apple Developer

    Description

    // TODO

    Mentioning @daemonloki to take a look at this and triage it into separate components (if necessary).

    Component tickets:

    • #...

    Screenshots

    iPhone

    | Light | Dark | | -- | -- | |Simulator Screen Shot - iPhone 13 - 2021-10-17 at 17 05 53|Simulator Screen Shot - iPhone 13 - 2021-10-17 at 17 07 01| |Simulator Screen Shot - iPhone 13 - 2021-10-17 at 17 06 00|Simulator Screen Shot - iPhone 13 - 2021-10-17 at 17 07 14| |Simulator Screen Shot - iPhone 13 - 2021-10-17 at 17 06 12|Simulator Screen Shot - iPhone 13 - 2021-10-17 at 17 07 19| |Simulator Screen Shot - iPhone 13 - 2021-10-17 at 17 06 21|Simulator Screen Shot - iPhone 13 - 2021-10-17 at 17 07 26| |Simulator Screen Shot - iPhone 13 - 2021-10-17 at 17 06 31|Simulator Screen Shot - iPhone 13 - 2021-10-17 at 17 07 39|

    iPad

    | Orientation | Light | Dark | | -- | -- | -- | | Portrait | Simulator Screen Shot - iPad Pro (11-inch) (3rd generation) - 2021-10-17 at 17 52 07 | Simulator Screen Shot - iPad Pro (11-inch) (3rd generation) - 2021-10-17 at 17 52 13 | Landscape | Simulator Screen Shot - iPad Pro (11-inch) (3rd generation) - 2021-10-17 at 17 48 07| Simulator Screen Shot - iPad Pro (11-inch) (3rd generation) - 2021-10-17 at 17 52 11 |

    Interactivity

    | State | Light | Dark | | -- | -- | -- | | Pressed (iPhone) | Simulator Screen Shot - iPhone 13 - 2021-10-17 at 17 26 02 | Simulator Screen Shot - iPhone 13 - 2021-10-17 at 17 25 46 | | Navigation | https://user-images.githubusercontent.com/14292245/137634489-fef42298-5bca-43b6-ac4e-52151f852b60.mp4 | https://user-images.githubusercontent.com/14292245/137634493-45d03544-fcea-40f5-a15c-6df3ecd036d4.mp4 | | Selected (iPad, portrait) | image | image |

    Other comments

    No response

    Checked the other issues?

    • [X] I have checked and verified this is the first request for this component.

    Code of Conduct

    • [X] I agree to cooperate in resolving this component request.
    triage feat component epic 
    opened by jeroen-meijer 0
  • feat: create native ios component gallery

    feat: create native ios component gallery

    Task name

    Create a native iOS component gallery.

    Description

    In order to properly be able to gather what components we want to build with a good degree of accuracy, it would be extremely helpful to have a native iOS component library gallery.

    We can use this app's contents (both the code as well as the visual aspect in runtime) as reference material when creating new iOS components in Flutter.

    Other comments

    We probably need an iOS dev to help us here. In the meantime, I can experiment with learning some SwiftUI and see how far we can get. 👀

    triage feat native-ios 
    opened by jeroen-meijer 1
  • proj: create roadmap

    proj: create roadmap

    Task name

    Create Roadmap

    Description

    In order to manage and index the work that needs to be done, I think it's a good idea to have a roadmap in mind.

    This currently involves the following:

    1. Meet with project owners and determine requirements.
    2. Write up action items based on requirements.
    3. Gather contributors who can help out.

    Other comments

    No response

    proj 
    opened by jeroen-meijer 0
Owner
null
pull_down_button is a rework of Flutter's PopupMenuButton to be styled like Pop-Up & Pull-Down Buttons from iOS 14+ with some additional customisation options.

pull_down_button is a rework of Flutter's PopupMenuButton to be styled like Pop-Up & Pull-Down Buttons from iOS 14+ with some additional customisation options.

ĐmĐrl 18 Dec 30, 2022
A Styled Toast Flutter package.

flutter_styled_toast A Styled Toast Flutter package. You can highly customize toast ever. Beautify toast with a series of animations and make toast mo

null 67 Jan 8, 2023
NestedScrollView: extended nested scroll view to fix following issues.

NestedScrollView: extended nested scroll view to fix following issues.

FlutterCandies 457 Jan 4, 2023
📓 Storyboard your components with Flutterbook. Develop, document, & test any kind of Flutter component.

Flutterbook A storyboarding tool to accelerate the development of Flutter widgets. Inspired by Storybook.js. The package is built to support Windows a

Philip Vu 25 Oct 7, 2022
A widget that displays a collection of dispersed and non-overlapping children

flutter_scatter A widget that displays a collection of dispersed and non-overlapping children. Can be used to create word clouds: Features Built-in de

Romain Rastel 85 Sep 27, 2022
A collection of widgets for making amazing onboarding experience in your flutter applications

Pal widgets A flutter package for better onboarding. A set of amazing onboarding widgets for your flutter applications. Install package add in your pu

Apparence.io 25 Oct 7, 2022
A new flutter package for collection of common popular social media widgets

Social Media Widgets - package A new flutter package for collection of common popular social media widgets Currently available widgets Snapchat screen

theboringdeveloper 34 Nov 12, 2022
Pure Dart and Flutter package for Android,IOS and Web

Fancy Flutter Alert Dialog Pure Dart and Flutter package for Android,IOS and Web A flutter Package to show custom alert Dialog,you can choose between

Dokkar Rachid Reda 119 Sep 23, 2022
PlutoGrid is a dataGrid that can be controlled by the keyboard on desktop and web. Of course, it works well on Android and IOS.

PlutoGrid is a dataGrid that can be controlled by the keyboard on desktop and web.

Manki Kim 453 Jan 4, 2023
Flutter progress dialog. Support both Android and iOS platform.

Flutter Progress Dialog [pub packages] | Flutter progress dialog. Support both Android and iOS platform

Dylan Wu 22 Oct 9, 2022
A dart package to display a horizontal bar of customisable toggle tabs. Supports iOS and Android.

toggle_bar A dart package to display a horizontal bar of customisable toggle tabs. Supports iOS and Android. Installation Depend on it. dependencies:

Prem Adithya 9 Jul 13, 2022
Cupertino_lists - an implementation of iOS-style lists (grouped and inset grouped).

cupertino_lists cupertino_lists is an implementation of iOS-style lists (grouped and inset grouped). Warning: This package probably will not be mainta

null 13 Nov 3, 2022
PowerFileView - A powerful file view widget, support a variety of file types, such as Doc Eexcl PPT TXT PDF and so on, Android is implemented by Tencent X5, iOS is implemented by WKWebView.

PowerFileView - A powerful file view widget, support a variety of file types, such as Doc Eexcl PPT TXT PDF and so on, Android is implemented by Tencent X5, iOS is implemented by WKWebView.

Yao 8 Oct 22, 2022
A high performance Flutter Widget to render Bottts svg avatars on android/ios devices.

Flutter Avatars - Bottts A high performance Flutter Widget to render Bottts svg avatars on android/ios devices. (pub.dev) It's faster than other class

Abhijat Saxena 11 Dec 19, 2021
Flutter StatusBar Control for iOS & Android

Since flutter_statusbar_manager is no longer maintained, this package is a re-publish and will be occasionally updated for continued use in existing projects.

Rafael M. 9 Nov 15, 2022
A flutter grouped list widget similar to the iOS UITableview method name.

group_tablelist A flutter grouped list widget similar to the iOS UITableview method name. Group tablelist package for Flutter. Features iOS tableview-

null 2 Aug 17, 2022
iOS-like proof of concept reorderable list with animations

Reorderable List in Flutter iOS-like proof of concept reorderable list with animations Preview Getting Started See example/lib/main.dart for example u

Matej Knopp 304 Jan 2, 2023
Custom Flutter widgets that makes Checkbox and Radio Buttons much cleaner and easier.

custom_radio_grouped_button Custom Radio Buttons and Grouped Check Box Button Custom Flutter widgets that makes Checkbox and Radio Buttons much cleane

Ketan Choyal 144 Sep 23, 2022
Custom widgets and utils using Flutter framework widgets and Dart language

reuse_widgets_and_utils The custom widgets and utils using Flutter framework widgets and Dart programming language. Getting Started This project is a

null 1 Oct 29, 2021