loaderStory top-level property
Story
loaderStory
getter/setter pair
Implementation
Story loaderStory = Story(
name: 'Loaders',
builder: (context) {
final loaderType = context.knobs.options<LoaderType>(
label: 'Loader Type',
options: [
Option(label: 'Dot Loader', value: LoaderType.dotLoader),
Option(label: 'Line Loader', value: LoaderType.lineLoader),
Option(label: 'Round Spinner', value: LoaderType.roundSpinner),
Option(label: 'Line Spinner', value: LoaderType.lineSpinner),
Option(label: 'Dot Spinner', value: LoaderType.dotSpinner),
],
initial: LoaderType.dotLoader,
);
String dotLoaderSize = 'medium';
Color dotLoaderColor = ThemeColors.primary;
String? dotLoaderText;
Color? dotLoaderTextColor;
double lineLoaderHeight = 10.0;
double lineLoaderWidth = 50.0;
Color lineLoaderBackgroundColor = const Color.fromRGBO(255, 240, 235, 1);
Color lineLoaderStripeColor = const Color.fromRGBO(241, 90, 41, 1.0);
Duration lineLoaderAnimationDuration = const Duration(milliseconds: 1000);
String? lineLoaderText;
Color? lineLoaderTextColor;
Color roundSpinnerColor = ThemeColors.primary;
String roundSpinnerSize = 'medium';
String? roundSpinnerText;
Color? roundSpinnerTextColor;
Color lineSpinnerColor = ThemeColors.primary;
String lineSpinnerSize = 'medium';
String? lineSpinnerText;
Color? lineSpinnerTextColor;
Color dotSpinnerColor = ThemeColors.primary;
String dotSpinnerSize = 'medium';
String? dotSpinnerText;
Color? dotSpinnerTextColor;
switch (loaderType) {
case LoaderType.dotLoader:
dotLoaderSize = context.knobs.options<String>(
label: 'Dot Loader Size',
options: [
Option(label: 'Small', value: 'small'),
Option(label: 'Medium', value: 'medium'),
Option(label: 'Large', value: 'large'),
Option(label: 'Extra Large', value: 'extraLarge'),
],
initial: 'medium',
);
dotLoaderColor = context.knobs.options<Color>(
label: 'Dot Loader Color',
options: [
Option(label: 'Primary', value: ThemeColors.primary),
Option(label: 'Secondary', value: Color(0xFF4CAF50)),
Option(label: 'Accent', value: Color(0xFF4CAF50)),
],
initial: ThemeColors.primary,
);
dotLoaderText = context.knobs.text(
label: 'Dot Loader Text',
initial: 'Loading...',
);
dotLoaderTextColor = context.knobs.options<Color>(
label: 'Dot Loader Text Color',
options: [
Option(label: 'Primary', value: ThemeColors.primary),
Option(label: 'Secondary', value: Color(0xFF4CAF50)),
Option(label: 'Accent', value: Color(0xFF2196F3)),
],
initial: ThemeColors.primary,
);
break;
case LoaderType.lineLoader:
lineLoaderHeight = context.knobs.slider(
label: 'Line Loader Height',
initial: 10.0,
min: 5.0,
max: 50.0,
// divisions: 9,
);
lineLoaderWidth = context.knobs.slider(
label: 'Line Loader Width',
initial: 50.0,
min: 20.0,
max: 200.0,
// divisions: 18,
);
lineLoaderBackgroundColor = context.knobs.options<Color>(
label: 'Line Loader Background Color',
options: [
Option(label: 'Light Grey', value: Colors.grey[200]!),
Option(label: 'Grey', value: Colors.grey),
Option(label: 'Dark Grey', value: Colors.grey[800]!),
],
initial: Colors.grey[200]!,
);
lineLoaderStripeColor = context.knobs.options<Color>(
label: 'Line Loader Stripe Color',
options: [
Option(label: 'Primary', value: ThemeColors.primary),
Option(label: 'Secondary', value: Color(0xFF4CAF50)),
Option(label: 'Accent', value: Color(0xFF2196F3)),
],
initial: ThemeColors.primary,
);
// lineLoaderAnimationDuration = Duration(
// milliseconds: context.knobs.slider(
// label: 'Line Loader Animation Duration',
// initial: 1000.0,
// min: 500.0,
// max: 300000.0,
// ).toInt(),
// );
lineLoaderText = context.knobs.text(
label: 'Line Loader Text',
initial: 'Loading...',
);
lineLoaderTextColor = context.knobs.options<Color>(
label: 'Line Loader Text Color',
options: [
Option(label: 'Primary', value: ThemeColors.primary),
Option(label: 'Secondary', value: Color(0xFF4CAF50)),
Option(label: 'Accent', value: Color(0xFF2196F3)),
],
initial: ThemeColors.primary,
);
break;
case LoaderType.roundSpinner:
roundSpinnerColor = context.knobs.options<Color>(
label: 'Round Spinner Color',
options: [
Option(label: 'Primary', value: ThemeColors.primary),
Option(label: 'Secondary', value: Color(0xFF4CAF50)),
Option(label: 'Accent', value: Color(0xFF2196F3)),
],
initial: ThemeColors.primary,
);
roundSpinnerSize = context.knobs.options<String>(
label: 'Round Spinner Size',
options: [
Option(label: 'Small', value: 'small'),
Option(label: 'Medium', value: 'medium'),
Option(label: 'Large', value: 'large'),
Option(label: 'Extra Large', value: 'extraLarge'),
],
initial: 'medium',
);
roundSpinnerText = context.knobs.text(
label: 'Round Spinner Text',
initial: 'Loading...',
);
roundSpinnerTextColor = context.knobs.options<Color>(
label: 'Round Spinner Text Color',
options: [
Option(label: 'Primary', value: ThemeColors.primary),
Option(label: 'Secondary', value: Color(0xFF4CAF50)),
Option(label: 'Accent', value: Color(0xFF2196F3)),
],
initial: ThemeColors.primary,
);
break;
case LoaderType.lineSpinner:
lineSpinnerColor = context.knobs.options<Color>(
label: 'Line Spinner Color',
options: [
Option(label: 'Primary', value: ThemeColors.primary),
Option(label: 'Secondary', value: Color(0xFF4CAF50)),
Option(label: 'Accent', value: Color(0xFF2196F3)),
],
initial: ThemeColors.primary,
);
lineSpinnerSize = context.knobs.options<String>(
label: 'Line Spinner Size',
options: [
Option(label: 'Small', value: 'small'),
Option(label: 'Medium', value: 'medium'),
Option(label: 'Large', value: 'large'),
Option(label: 'Extra Large', value: 'extraLarge'),
],
initial: 'medium',
);
lineSpinnerText = context.knobs.text(
label: 'Line Spinner Text',
initial: 'Loading...',
);
lineSpinnerTextColor = context.knobs.options<Color>(
label: 'Line Spinner Text Color',
options: [
Option(label: 'Primary', value: ThemeColors.primary),
Option(label: 'Secondary', value: Color(0xFF4CAF50)),
Option(label: 'Accent', value: Color(0xFF2196F3)),
],
initial: ThemeColors.primary,
);
break;
case LoaderType.dotSpinner:
dotSpinnerColor = context.knobs.options<Color>(
label: 'Dot Spinner Color',
options: [
Option(label: 'Primary', value: ThemeColors.primary),
Option(label: 'Secondary', value: Color(0xFF4CAF50)),
Option(label: 'Accent', value: Color(0xFF2196F3)),
],
initial: ThemeColors.primary,
);
dotSpinnerSize = context.knobs.options<String>(
label: 'Dot Spinner Size',
options: [
Option(label: 'Small', value: 'small'),
Option(label: 'Medium', value: 'medium'),
Option(label: 'Large', value: 'large'),
Option(label: 'Extra Large', value: 'extraLarge'),
],
initial: 'medium',
);
dotSpinnerText = context.knobs.text(
label: 'Dot Spinner Text',
initial: 'Loading...',
);
dotSpinnerTextColor = context.knobs.options<Color>(
label: 'Dot Spinner Text Color',
options: [
Option(label: 'Primary', value: ThemeColors.primary),
Option(label: 'Secondary', value: Color(0xFF4CAF50)),
Option(label: 'Accent', value: Color(0xFF2196F3)),
],
initial: ThemeColors.primary,
);
break;
}
return Center(
child: DDSLoader(
loaderType: loaderType,
dotLoaderSize: dotLoaderSize,
dotLoaderColor: dotLoaderColor,
dotLoaderText: dotLoaderText,
dotLoaderTextColor: dotLoaderTextColor,
lineLoaderHeight: lineLoaderHeight,
lineLoaderWidth: lineLoaderWidth,
lineLoaderBackgroundColor: lineLoaderBackgroundColor,
lineLoaderStripeColor: lineLoaderStripeColor,
lineLoaderAnimationDuration: lineLoaderAnimationDuration,
lineLoaderText: lineLoaderText,
lineLoaderTextColor: lineLoaderTextColor,
roundSpinnerColor: roundSpinnerColor,
roundSpinnerSize: roundSpinnerSize,
roundSpinnerText: roundSpinnerText,
roundSpinnerTextColor: roundSpinnerTextColor,
lineSpinnerColor: lineSpinnerColor,
lineSpinnerSize: lineSpinnerSize,
lineSpinnerText: lineSpinnerText,
lineSpinnerTextColor: lineSpinnerTextColor,
dotSpinnerColor: dotSpinnerColor,
dotSpinnerSize: dotSpinnerSize,
dotSpinnerText: dotSpinnerText,
dotSpinnerTextColor: dotSpinnerTextColor,
),
);
},
);