đ Curtains
pub.dev Listing | API Doc | GitHub
API References: Curtains
| Sensitivity
| đĨ package:shadows
: đ´ Elevation
Wrap a scrollable with scrim đ Curtains
while not at the start or end, alluding to unrevealed content.
There has been a breaking change from
0.9.4+1
to0.9.5
, but it is quite easily fixed.
Package still in pre-release.A few other small changes have been made that may require minor cleanup
if moving to this version from an older one.
0.10.0
(now)âŦ ī¸
0.9.4+1
(before)|
0.10.0
(now)âŦ ī¸
0.9.4+1
(before)Curtains
Curtains.regal
| Sensitivity sensitivity
List<double> sensitivity
Curtains.instant
Curtains.fancy
| TextDirection textDirection
TextDirection directionality
Curtains.elevated
Curtains
| bool endInitVisible
â
bool endCurtainInitVisible
â Also now available is
bool startInitVisible
.
Furthermore either
startCurtain
orendCurtain
now accepts a more abstractDecoration?
as opposed to a restriction toBoxDecoration?
.
đ Table of Contents
- đ Curtains
- đ§Ģ Examples
- đ Reference
- đ´ Elevation
- Any
Decoration
- đ Bugs
- đ¸ More by Zaba
đ§Ģ Examples
See demonstrations of this Flutter package:
Elevated đ Curtains
In lieu of Decoration
s, provide a simple number-based elevation
.
Optionally provide a color
or specify duration
.
final curtains = Curtains.elevated(
child: ListView(
children: List.generate(
25,
(i) => ListTile(title: Text('ListTile #: ${i+1}')),
),
),
elevation: 24.0 // optional, defaults to `9.0`
// Optional color; will maintain Material elevation opacities.â
color: Colors.red
);
It's that easy!
â đĨ
Shadows
- See:Elevation.asBoxShadows
Instant đ Curtains
Special Curtains
that offer no animation support.
No AnimationController
s were hurt in the making of this widget.
final curtains = Curtains.instant(
/// đ´ Default constructor đ [Curtains] employs `Elevation.asBoxDecoration` to
/// render its decorations; but feel free to use these static methods, too,
/// if you opt for đĨ [package:shadows].
startCurtain: const BoxDecoration(. . .) // Elevation.asBoxDecoration(12.0), // đ´
endCurtain: BoxDecoration(boxShadow: Elevation.asBoxShadows(12.0)), // đ´
child: ListView(
children: List.generate(
25,
(i) => ListTile(title: Text('ListTile #${i+1}')),
),
),
);
It's similarly easy!
Animated đ Curtains
Each curtain may be customized independently. The spread
parameter provides
"girth," either width or height depending on axis, to allow the application
of Decoration
images, gradients, and fills.
Without spread
, the only truly valid form of scrim curtain is the
List<BoxShadow>
from BoxDecoration
, ShapeDecoration
, etc.
This instance of đ Curtains has custom, animated BoxDecorations as well as sensitivity at the start and end. |
---|
BoxDecoration buildCurtain({bool isStart = true}) => BoxDecoration(
gradient: LinearGradient(
colors: [Colors.green[400]!, Colors.green[400]!.withOpacity(0)],
begin: (isStart) ? Alignment.centerLeft : Alignment.centerRight,
end: (isStart) ? Alignment.centerRight : Alignment.centerLeft,
),
boxShadow: const [
BoxShadow(color: Color(0x22FF0000), spreadRadius: 0.0, blurRadius: 5.0),
BoxShadow(color: Color(0x66FF0000), spreadRadius: 10.0, blurRadius: 30.0),
BoxShadow(color: Color(0x22FF0000), spreadRadius: 60.0, blurRadius: 150.0),
],
);
final curtains = Curtains(
startCurtain: buildCurtain(),
endCurtain: buildCurtain(isStart: false),
// Provide `spread` to [Curtains] for decoration support beyond [BoxShadow]s.
// (Gives "girth" to individual curtains; otherwise `0`.)
spread: 50.0,
// `start` appears once scrolled `350` px beyond min extent
// `end` appears once scrolled `175` px beyond (before) max extent
sensitivity: const Sensitivity.only(start: 350.0, end: 175.0),
// đ Curtains are animated:
duration: const Duration(milliseconds: 600),
curve: Curves.fastOutSlowIn,
// â If wrapping a horizontal scrollable, initialize here, too:
scrollDirection: Axis.horizontal, // â
child: ListView(
scrollDirection: Axis.horizontal, // â
itemExtent: 100.0,
children: List.generate(
25,
(i) => ListTile(title: Text('ListTile #${i+1}')),
),
),
);
But look here, and we can get pretty complex and creative.
Notice the
spread
initialization forgradient
support.
đ Reference
Peruse the đ Curtains
pub.dev documention for a full breakdown.
- This is simple package to use, but it is also a package that was easy to implement.
- It is, however, overly documented so that any beginners may learn from its code.
- Utilizes a simple
NotificationListener
in lieu ofScrollController
, which were both elusive when starting Flutter.
đ´ Elevation
The Elevation
paradigm is handled by đĨ package:shadows
Any Decoration
Maybe supplying a DecorationImage is what you need? |
|
---|---|
Or consider something with a shape by using a ShapeDecoration for the curtain decoration field. |
đ Bugs
One known bug:
- Even with
Curtains.spread
set non-negligibly,BoxDecoration.backgroundBlendMode
does not work correctly.
đ¸ Zaba.app â simple packages, simple names.
Libraries
- curtains
- đ Curtains Library