Skip to main content

abstract_widget 1.0.0 copy "abstract_widget: ^1.0.0" to clipboard
abstract_widget: ^1.0.0 copied to clipboard

discontinued

Generic widget that builds itself depending on the derived class of current value.

AbstractWidget #

pub package

Generic widget that builds itself depending on the derived class of current value.

AbstractWidget example

Usage #

  1. Define classes hierarchy:
abstract class Animal {
  static Animal get random => Random().nextBool() ? Doge() : Cate();
}

class Doge extends Animal {
  final int badDeeds = 0;
  final int goodDeeds = Random().nextInt(20);
}


class Cate extends Animal {
  static final _breeds = ['Oriental', 'Birman', 'Tonkinese'];

  final String breed = _breeds[Random().nextInt(_breeds.length)];
  final bool friendly = Random().nextBool();
}

  1. Create widget and pass it necessary builder functions:
// ...
  child: AbstractWidget<Animal>(Animal.random)
    ..when<Doge>((doge) => Text('wow. such widget.'))
    // It's also correct to omit type parameters as they will 
    // be inferred depending on argument type of the builder.
    ..when((Doge doge) => Center(
          child: Column(mainAxisSize: MainAxisSize.min, children: [
            Text('Bad deeds: ${doge.badDeeds}'),
            Text('Good deeds: ${doge.goodDeeds}'),
          ]),
        ))
    ..when<Cate>(_buildCate),
  
  
Widget _buildCate(Cate cate) {
  // build cate widget here
}

Note #

Be cautious when passing builder functions without explicitly specifying generic type argument (like ..when((Doge doge) => ...) in the example above). In case of an incompatible type, Dart analyzer won't mark it as error, which will result in runtime exception.

0
likes
35
points
69
downloads

Publisher

unverified uploader

Weekly Downloads

Generic widget that builds itself depending on the derived class of current value.

Homepage

License

MIT (license)

Dependencies

flutter

More

Packages that depend on abstract_widget