sheen 0.6.2
sheen: ^0.6.2 copied to clipboard
A glass design system for Flutter: frosted glass, spring motion, one-accent theming and 80+ widgets, with booking widgets for travel apps.
0.6.2 #
SheenChapterListshows how long each chapter is on the right ("30 min", "1 h 5 min") and where it starts under the title ("From 1:30:00"): a start time alone on the right read as a length ("0:00:00" looked like an empty chapter). The newlength(of the audio the chapters belong to) gives the last chapter its length.formatSheenLength, and the stringschapterFrom,minutesandhoursMinutesinSheenMusicStrings.
0.6.1 #
SheenMiniPlayer.onSkipForward(andskipForward): a "forward 30" button in place of next, for long audio.SheenSpeedPickerlays its speeds out as one row of equal buttons; in a list (which gives its children the full width) each speed took a whole line.currentSheenChapterreturns -1 when the position is before the first chapter, so aSheenChapterListof another part of a book marks no chapter as playing.
0.6.0 #
- Long audio (audiobooks, podcasts) in
package:sheen/music.dart:SheenTransportControls.onSkipBack/onSkipForwardput "back 15" and "forward 30" buttons (skipBack,skipForwardset how far) in place of previous and next;leadingandtrailingtake the places of shuffle and repeat, for a speed or sleep timer button. Existing players are unchanged.SheenSkipButton: the circular arrow with the seconds inside; media controls keep their direction in right to left.SheenSeekBar.marksdraws a tick where each chapter starts;SheenSeekBar.ratemakes the time left follow the playback speed.SheenSpeedPickerandformatSheenSpeed(1.25×).SheenChapter,currentSheenChapterandSheenChapterList: the chapter playing in the accent colour, the ones heard dimmed, a tap picks one.SheenResumeCard: "Continue listening" with the cover, what is left, progress and play.SheenTag/SheenTagRow: small facts under a row ("Whole book · Ukrainian").SheenArtwork(book: true): a 3:4 book cover with a spine shadow.SheenMusicStrings:skipBack,skipForward,speed,chapters,continueListening.
- Icons:
book,bookmark,chapters,skipBack,skipForward. - AUTHORS: sheen is made and owned by Danil Martsinkovskii and Roman Chernogorov.
0.5.1 #
- Loading is shown:
SheenMiniPlayer,SheenTransportControlsandSheenShareCardtakeloading; a spinner takes the play button's place while the song loads (a tap still pauses). SheenPage.leading: a control at the top start of a page without a back button (a tab's first page).SheenShareCardshows when its song is the one playing:currentputs the title in the accent with small playing bars, and withplayingthe button shows pause (and says Pause to screen readers).- Reactions the way people expect from Instagram:
SheenChatBubble.onDoubleTap(a heart pops over the message),onReact(a small heart button beside every message, so reacting is discoverable; a long press does the same), andshowSheenReactionBar, which opens the emoji row right above the message (or under it near the top).
0.5.0 #
- New
package:sheen/social.dart: chat and sharing widgets.SheenPresenceAvatar(online dot, playing bars),SheenAvatarStack,SheenChatRow,SheenUnreadCount,SheenRequestCard,SheenPresenceStrip,SheenChatBubble,SheenReactions,SheenReactionBar,SheenTypingIndicator,SheenShareCard,SheenComposer,SheenFriendPicker,SheenListenTogetherBanner, withSheenSocialStrings/SheenSocialScope. - Filled glyphs
SheenIcons.chatFillandSheenIcons.peopleFill, for a Friends or Messages tab.
0.4.3 #
- No change in behaviour:
SheenReorderListkeeps a callback that newer Flutter deprecates (its replacement does not exist in the oldest Flutter sheen supports), with the analyzer told why, so the package scores in full again.
0.4.2 #
- Sheets from nested navigators:
showSheenSheetandshowSheenChoiceSheettakeuseRootNavigator, asshowSheenCustomSheetdoes, so a sheet opened inside a tab with its own back stack covers the whole app, tab bar included. - Icons:
SheenIcons.musicFill,waveform,waveformFill,libraryandlibraryFill, for the tabs of a music app.
0.4.1 #
- Formatting only (
dart formatat 120 columns, as CI checks); no change to the API or to how anything draws.
0.4.0 #
- Music library:
import 'package:sheen/music.dart'for the parts of a music player.SheenArtwork(a cover with a placeholder),SheenArtworkGlow(the cover blurred behind the glass; a flat tint with Reduce Transparency),SheenMiniPlayer(tap or drag up to open, swipe to change song),SheenSeekBar(previews while dragging, reports on release, 10-second steps for screen readers) withformatSheenDuration,SheenTransportControlswithSheenRepeatMode,SheenTrackRowwithSheenTrackSave(save, saving with a ring, saved),SheenArtworkTileandSheenShelf,SheenLyricsViewwithSheenLyricsLine,SheenReorderList,SheenBandSlider,SheenPlayingBars, andSheenMusicStrings/SheenMusicScopefor the words. In the gallery under Music and indoc/music.md. - Icons:
SheenIcons.playFill,pauseFill,nextFill,previousFill,shuffle,repeat,repeatOne,lyrics,queue,airplay,moon,thumbDown,versions,onDevice,musicandgrip. Media controls do not mirror in right-to-left text.
0.3.6 #
- Struck prices in rows:
SheenKeyValue(was:)andSheenListRow(wasValue:)strike the usual value under the value on a deal, as a hotel room shows it.
0.3.5 #
- Trip card: the title takes up to two lines (cruise names are long);
heightForcounts both.
0.3.4 #
- Trip card: the tag (a cruise line, "Guaranteed") moves to the photo's foot, bottom start, where a long name has
the whole width; the top start is the deal badge's alone, as on
SheenPremiumCard.
0.3.3 #
- Trip deals as hotel deals:
SheenTripCard'sdealbadge sits top start, as onSheenPremiumCard, with the tag after it;wasLabelsays the struck price to a screen reader ("was AED 3,159").
0.3.2 #
- Deals on trips:
SheenTripCardtakesdeal(a badge on the photo, top end, such as "−5%"),wasPrice(the usual price struck through under the price) anddealNote("until 31 Oct"), asSheenPremiumCarddoes.SheenTripCard.heightFor(scaler, note: true)makes room for the deal's line in a row with a card on a deal.
0.3.1 #
- Right to left:
sheenTextDirectionOf(text), the direction a text reads in from its first letter.SheenTripCarddraws its title and eyebrow in their own direction, so an English title in an Arabic app reads "9-day Greek Isles" and is cut at its end;SheenKeyValueCarddoes the same for each label and value ("965 ft"). - Fix:
SheenTripCardkeeps each line at the heightheightForcounts whatever font draws it; Arabic text no longer overflowed the card by a pixel.
0.3.0 #
- Tours and cruises:
SheenTripCard(a carousel card the size ofSheenPremiumCard, with a tag, an eyebrow, facts and a price from),SheenTripTag,SheenItinerarywithSheenItineraryStop(days or ports on a line of numbered dots; quiet stops for days at sea) andSheenTripIcon. In the gallery under Travel → Tours & cruises and indoc/travel.md. - Icons:
SheenIcons.ship.
0.2.5 #
- pub.dev: ten screenshots, the most pub.dev shows (0.2.4 listed eleven and lost the screenshots check). The
foundation screenshot stays in
doc/foundation.md.
0.2.4 #
- Docs: deals in the gallery (Travel → On a deal), a new screenshot on pub.dev and in the README, a deals section
in
doc/travel.mdwith code, andSheenDealBadge/SheenWasPricein the widget list. No change in behaviour.
0.2.3 #
- Hotel card on a deal: the struck total moves from the name's line to the line under the total, beside the headline. On a phone the name had been cut to a few letters ("Palace Dow…").
0.2.2 #
lib/src/travel/cards.dartformatted withdart format, so the package gets its full pub.dev points again. No change in behaviour.
0.2.1 #
- Premium card on a deal: the struck total moves from the price line to the deal's line under it, before the note
("
AED 1,210.21Ends 12 Oct"). The price line keeps its nights label whole; before, the struck total pushed it out ("1 ni…"). Give the rowheightFor(scaler, note: true)when a card haswasTotalordealNote.
0.2.0 #
- Deals:
SheenDealBadgeis a red capsule for a deal's words, such as "−15%". The fill is deeper in dark themes, so the white words keep their contrast.SheenWasPriceis the price before a deal, struck through. SheenHotelCardandSheenPremiumCardtakedeal(the badge on the photo),wasTotal(struck next to the total),wasLabel(how a screen reader says it, such as "was AED 1,422") anddealNote(a line such as "Ends Sun 18 Oct").SheenPremiumCard.heightFortakesnote: truefor a row whose cards have that line.SheenPriceBlocktakeswasTotal. Without them, every card looks and reads as before.
0.1.4 #
- Score line on narrow cards: on a
SheenHotelCardthe board ("Room only") moves under the score and its words when both do not fit on one line. Before, the two halved the line, so on phones about 400 points wide the words were cut ("Wonderful · 87% rec…"). With room for both, the board stays at the end of the score's line as before.
0.1.3 #
- Scores for screen readers:
SheenHotelCardandSheenPremiumCardtake ascoreLabel, the way a screen reader says the score, such as "Guest score 4.4 out of 5". The badge still shows the number alone. Without ascoreLabelthe card reads the score as before.
0.1.2 #
- Fields over a bottom bar: a
SheenTextFieldorSheenPasswordFieldthat takes focus low on aSheenPagewith a bottom bar now scrolls clear of the bar when the keyboard comes up; before, it stopped under the bar. The newSheenBottomBarSpacesays how much of a scroll view a floating bar covers.SheenPageprovides one for its own bar; wrap your scroll view in one when you float a bar over it yourself.
0.1.1 #
Fixes found while moving the first app onto sheen.
- Sheets give their content a transparent
Material, as Flutter's bottom sheet does. An app's own Material widgets in a sheet (aTextField, aSlider) no longer fail with "No Material widget found". The text style from above the sheet stays, so sheen's type still wins over Material's. - Toasts set their own text style. A toast shown from a context outside a
SheenScope(an overlay above the app's pages) no longer draws its text in Flutter's error style, the yellow underline. - Type pins the leading distribution (even, as Material 3) in every style, as it already pinned letter spacing and line height. Text now sits in the same place under a Material ancestor and without one; before, text in a sheet sat about 1 pt lower than the same text on a page. Goldens are updated for this sub-pixel shift.
0.1.0 #
First release.
- Foundation:
SheenScope, a theme built from one accent (SheenThemeData.light/.dark), colour, type, glass and lens tokens, spacing, radii and layout widths,SheenStringsfor the few built-in words,SheenTone, and 82 icons (SheenIcon,SheenIcons). - Glass:
SheenGlassin regular, clear and prominent kinds with one shared backdrop per scope, andSheenLens. High contrast andreduceTransparencymake glass opaque. - Motion: springs (
SheenMotion),SheenPressable,SheenEntrance,SheenPhotoHeroandSheenRollingDigits; Reduce Motion turns movement into fades. - Buttons, navigation, inputs, selection, sheets, feedback, content and layout: 80+ widgets, among them the
floating tab bar, toolbars, an action bar, text, password, search and one-time-code fields, a date-range picker, a
range histogram, choice sheets, a glass menu, sheets with two heights, alerts, toasts, skeletons, empty states,
status screens, accordions, a card swiper and
SheenPagewith a large title. - Travel (
package:sheen/travel.dart): hotel, featured and city cards, price blocks, cancellation lines, score badges and map price pins, as widgets and as bitmaps for native map markers. - A gallery app in
example/and a live demo.
