contract_prop 0.9.0 copy "contract_prop: ^0.9.0" to clipboard
contract_prop: ^0.9.0 copied to clipboard

Dependency Injection (DI) for widget properties, provide override contract from inherited scope.

contract_prop #

Dependency Injection (DI) for widget properties, provide override contract from inherited scope.

Getting started #

Add package to your project flutter pub add any_to_widget

Implements ContractInterface for your contract. For example

class LabelContract with ContractInterface {
  final String name;

  LabelContract({this.name = 'foo bar'});

  ContractProp<String> get label => ContractProp<String>(contract: (_) => name);
}

Create widget, wrap your widget ContractPropBuilder

class ContractText extends StatelessWidget {
  final String? text;

  const ContractText({Key? key, this.text}) : super(key: key);

  @override
  Widget build(BuildContext context) {
    return ContractPropBuilder<LabelContract>(
      contract: LabelContract(),
      builder: (_, contract) => Text(
        text ?? contract.label.value(context) ?? '',
      ),
    );
  }
}

Override contracts


class MyApp extends StatelessWidget {
  const MyApp({Key? key}) : super(key: key);

  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      builder: (_, child) {
        return ContractScope(
          contracts: [
            LabelContract(name: 'Hello world'),
          ],
          child: child!,
        );
      },
      home: const Scaffold(body: Center(child: DemoPage())),
    );
  }
}

Additional information #

See tests for more example

0
likes
160
points
23
downloads

Publisher

unverified uploader

Weekly Downloads

Dependency Injection (DI) for widget properties, provide override contract from inherited scope.

Repository (GitHub)

Documentation

API reference

License

MIT (license)

Dependencies

flutter

More

Packages that depend on contract_prop