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

Overview

cupertino_plus

style: very good analysis License: MIT

⚠️ Experimental and work in progress ⚠️

Note: The pub listing for this package only exists to reserve the name for the package. Using this package as a dependency in its current state is redundant and not recommended.

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

By Jeroen Meijer and Reuben Turner.

About the cupertino_plus project

Last updated: 2021-09-28

Reasoning

cupertino_plus 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
Flutter implementation of Clean Architecture, inspired on the guidelines created by Uncle Bob.

clean_framework Flutter implementation of Clean Architecture, inspired on the guidelines created by Uncle Bob. see http://www.amazon.com/dp/0134494164

Acme Software 21 Dec 13, 2022
Draw perfect freehand lines—in Flutter.

Draw perfect pressure-sensitive freehand lines. ?? A port of the perfect-freehand JavaScript library. Try out that demo. ?? Love this library? Conside

Steve Ruiz 184 Dec 8, 2022
Official Git of flutter code-push made by Chimera inc. If you want to get more info or seek for biz corporation, you can contact [email protected].

中文版 Chimera Flutter Code Push Chimera is a Dart compiler developed by ourselves, which generates interpretable and executable bytecode to implement co

Waytoon 21 Oct 6, 2022
Official CLI for the GetX framework

Official CLI for the GetX framework

Shahanul Haque Shawon 0 Nov 23, 2021
A collection of flutter and dart libraries allowing you to consume complex external forms at runtime.

flutter_dynamic_forms A collection of flutter and dart libraries providing a solution for Server Driven UI in your Flutter application. Package Pub ex

Ondřej Kunc 193 Dec 20, 2022
Contains utility functions and classes in the style of dart:collection to make working with collections easier

The collection package for Dart contains a number of separate libraries with utility functions and classes that makes working with collections easier.

Dart 273 Dec 27, 2022
Collection of object-oriented Dart primitives

Dartoos — Dart Object-Oriented Software This package is a collection of object-oriented Dart primitives that implement classic data structures, algori

Dartoos 6 Nov 6, 2022
Collection of should have StateNotifiers for combining with Riverpod/Provider

Collection of custom StateNotifiers. Riverpod / StateNotifierProvider or Provider / LocatorMixin

Mehmet Esen 2 Feb 27, 2022
Get Version - Get the Version Name, Version Code, Platform and OS Version, and App ID on iOS and Android. Maintainer: @rodydavis

Get Version - Get the Version Name, Version Code, Platform and OS Version, and App ID on iOS and Android.

Flutter Community 87 Jan 4, 2023
Log snapshot management solution (iOS/Android/Web/Server) built with Flutter/Dart using Bloc pattern and Firebase Firestore backend.

Log snapshot management solution (iOS/Android/Web/Server) built with Flutter/Dart using Bloc pattern and Firebase Firestore backend.

Alexey Perov 5 Nov 9, 2022
BMI Calculator is a Mobile Application for Android and iOS built by Flutter

BMI Calculator ?? Our Goal The objective of this tutorial is to look at how we can customise Flutter Widgets to achieve our own beautiful user interfa

Fady Fawzy 2 Jan 10, 2022
For test background service try to run ios

workmanager_example Demonstrates how to use the workmanager plugin. Getting Started This project is a starting point for a Flutter application. A few

Taylan YILDIZ 2 Sep 20, 2021
The Dart Time Machine is a date and time library for Flutter, Web, and Server with support for timezones, calendars, cultures, formatting and parsing.

The Dart Time Machine is a date and time library for Flutter, Web, and Server with support for timezones, calendars, cultures, formatting and parsing.

null 2 Oct 8, 2021
Library for help you make userbot or bot telegram and support tdlib telegram database and only support nodejs dart and google-apps-script

To-Do telegram client dart ✅️ support multi token ( bot / userbot ) ✅️ support bot and userbot ✅️ support telegram-bot-api local server ✅️ support tel

Azka Full Snack Developer:) 73 Jan 7, 2023
An android application built using Flutter that computes the Body Mass Index of person and suggestion to carry ,by taking Inputs (Weight, Height, and Age), Built using Flutter

BMI Calculator ?? Our Goal The objective of this tutorial is to look at how we can customise Flutter Widgets to achieve our own beautiful user interfa

dev_allauddin 7 Nov 2, 2022
Converts SVG icons to OTF font and generates Flutter-compatible class. Provides an API and a CLI tool.

Fontify The Fontify package provides an easy way to convert SVG icons to OpenType font and generate Flutter-compatible class that contains identifiers

Igor Kharakhordin 88 Oct 28, 2022
A flutter package provides controllers and editors for complex models and lists

This package provides controllers and editors for complex models and lists and is inspired by simplicity of TextEditingController. It encapsulates sta

null 2 Sep 1, 2022
A dart package to help you parse and evaluate infix mathematical expressions into their prefix and postfix notations.

A dart package to help you parse and evaluate infix mathematical expressions into their prefix and postfix notations.

Miguel Manjarres 2 Jan 28, 2022
Args simple - A simple argument parser and handler, integrated with JSON and dart

args_simple A simple argument parser and handler, integrated with JSON and dart:

Graciliano Monteiro Passos 1 Jan 22, 2022