pure_widget

Last updated:

0 purchases

pure_widget Image
pure_widget Images
Add to Cart

Description:

pure widget

pure_widget #



Base widget which triggers rebuild only if props changed
Installation #
pubspec.yaml:
dependencies:
pure_widget: ^1.0.0
copied to clipboard
Example #
import 'dart:math';

import 'package:flutter/material.dart';
import 'package:pure_widget/pure_widget.dart';

void main() {
runApp(App());
}

class TileProps {
final int value;

TileProps(this.value);
}

class Tile extends PureWidget<TileProps> {
final TileProps props;

const Tile({Key? key, required this.props}) : super(key: key);

@override
Widget build(BuildContext context) {
print('rebuild with new value ${props.value}');

return Card(
child: Center(
child: Text(
props.value.toString(),
style: Theme.of(context).textTheme.headline1,
),
),
);
}
}

class App extends StatefulWidget {
const App({Key? key}) : super(key: key);

@override
_AppState createState() => _AppState();
}

class _AppState extends State<App> {
final List<TileProps> values = [TileProps(0), TileProps(0), TileProps(0)];
final r = Random();

update() {
setState(() {
final index = r.nextInt(3);
final oldValue = values[index].value;

values[index] = TileProps(oldValue + 1);
});
}

@override
Widget build(BuildContext context) {
return MaterialApp(
home: Scaffold(
body: Column(
children: [
...[
Tile(props: values[0]),
Tile(props: values[1]),
Tile(props: values[2]),
].map((e) => Expanded(child: e))
],
),
floatingActionButton: FloatingActionButton(
child: Icon(Icons.add),
onPressed: update,
),
),
);
}
}
copied to clipboard
License #
MIT

License:

For personal and professional use. You cannot resell or redistribute these repositories in their original state.

Files In This Product:

Customer Reviews

There are no reviews.