Skip to content

Instantly share code, notes, and snippets.

@GIfatahTH
GIfatahTH / main_model.dart
Last active February 18, 2019 16:35
main.dart file of scoped_model
class MainModel extends Model {
final itemProvider = ItemProvider();
List<Item> items;
Color detailedColor; // The color of the tapped card from the ListView
int detailedIndex; // The index of the tapped card from the ListView
getItems() async {
items = await itemProvider.fetchItems();
@GIfatahTH
GIfatahTH / main.dart
Last active February 18, 2019 16:41
UI part of scoped_model
class MyScopedModelState extends State<MyScopedModel> {
MainModel mainModel;
void initState() {
super.initState();
mainModel = MainModel();
}
@override
Widget build(BuildContext context) {
@GIfatahTH
GIfatahTH / main_bloc.dart
Last active April 3, 2020 07:01
MainBloc class of Bloc Pattern
class MainBloc {
final itemProvider = ItemProvider();
final itemsConroller = StreamController<List<Item>>();
final detailedColorConroller = StreamController<Color>();
final detailedItemConroller = StreamController<Item>();
Stream get itemsStream => itemsConroller.stream;
Stream get detailedColorStream => detailedColorConroller.stream;
Stream get detailedItemStream => detailedItemConroller.stream;
@GIfatahTH
GIfatahTH / main.dart
Created February 18, 2019 20:20
the UI part of the BloC pattern
class MyHomePage extends StatefulWidget {
@override
MyHomePageState createState() {
return new MyHomePageState();
}
}
class MyHomePageState extends State<MyHomePage> {
@override
void initState() {
@GIfatahTH
GIfatahTH / main_bloc.dart
Last active December 7, 2019 12:31
BloC of states_rebuilder
import 'dart:ui';
import 'package:flutter/widgets.dart';
import 'package:states_rebuilder/states_rebuilder.dart';
import 'item.dart';
import 'item_provider.dart';
class MainBloc extends StatesRebuilder {
final itemProvider = ItemProvider();
@GIfatahTH
GIfatahTH / main.dart
Last active December 7, 2019 12:32
UI of states_rebuilder
class MyHomePage extends StatelessWidget {
@override
Widget build(BuildContext context) {
return Column(
children: <Widget>[
Container(
padding: EdgeInsets.only(top: 10),
height: 150,
child: StateBuilder(
import 'dart:async';
class LoginFormModel {
final emailController = StreamController<String>();
final passwordController = StreamController<String>();
Function(String) get changeEmail => emailController.sink.add;
Function(String) get changePassword => passwordController.sink.add;
Stream<String> get email => emailController.stream.transform(validateEmail);
class LoginFormView extends StatelessWidget {
@override
Widget build(BuildContext context) {
return Injector(
inject: [
Inject(() => LoginFormModel()),
//get teh email stream and inject it as stream
Inject.stream(() => Injector.get<LoginFormModel>().email,
name: "emailStream"),
class FutureCounterWithError extends ChangeNotifier {
int _count = 0;
int get count => _count;
bool isLoaded = false;
bool hasError = false;
String errorMessage;
Future<void> increment() async {
isLoaded = false;
class Counter {
int _count = 0;
int get count => _count;
Future<void> increment() async {
await Future<void>.delayed(const Duration(seconds: 1));
if (Random().nextBool()) {
throw CounterError('You have an error');
}
_count++;