Wednesday, April 3, 2019

Dart Stream



import 'dart:async';

class  Cake{}
class Order{
  String type;
  Order(this.type);
}

main() async {

  final streamController = StreamController();
  final order = new Order('chocolate');

  final baker = new StreamTransformer.fromHandlers(
  handleData: (cakeType, sink){
    if (cakeType == 'chocolate'){
      sink.add(new Cake());
    }else{
     sink.addError("I can't bake that Cake!!!") ;
    }
  }
  );

  streamController.sink.add(order);

  streamController.stream.map((order) => order.type).
    transform(baker)
    .listen(
    (cake) => print('Here your cake $cake'),
    onError: (err)=> print(err)
           );
}

Monday, April 1, 2019

Json to Model with type



class ImageModel{

  String id;
  String url;
  String title;

  ImageModel(this.id, this.url, this.title);

  ImageModel.fromJson(Map<String, dynamic> parsedJson){
    id = parsedJson['id'];
    url = parsedJson['url'];
    title = parsedJson['title'];
  }
  
}

Json to Model



TYPE-1

import 'dart:convert';

void main() {

  var rawJson = '{"url": "http:blah.jpg","id":1}';

  var parsedJson = json.decode(rawJson);

  var imageModel = new ImageModel(parsedJson['id'], parsedJson['url']);

  print(imageModel.id);
  print(imageModel.url);

}


class ImageModel{

  int id;
  String url;

  ImageModel(this.id, this.url);

}
=================
DISADVANTAGE - If you have  10 element in constructor is not good as optimized cding part.
  var imageModel = new ImageModel(parsedJson['id'], parsedJson['url']);

so Now create in effective way in TYPE-2
=================



TYPE-2
=========================

import 'dart:convert';

void main() {

  var rawJson = '{"url": "http:blah.jpg","id":1}';

  var parsedJson = json.decode(rawJson);

  var imageModel = new ImageModel.fromJson(parsedJson);

  print(imageModel.id);
  print(imageModel.url);

}


class ImageModel{

  int id;
  String url;

  ImageModel(this.id, this.url);

  ImageModel.fromJson(parsedJson){
    id = parsedJson['id'];
    url = parsedJson['url'];
  }

}

=========================



You can also represent this  -

ImageModel.fromJson(parsedJson){
  id = parsedJson['id'];
  url = parsedJson['url'];
  title = parsedJson['title'];
}


with (both are similar)-

ImageModel.fromJson(parsedJson) :
  id = parsedJson['id'],
  url = parsedJson['url'],
  title = parsedJson['title'];






Generic Class



void main() {
  var slot = new Slot<Circle>();

  slot.insert(new Circle());
}

class Circle{
 
}

class Square{
 
}

class Slot<HFGVXV>{

  insert(HFGVXV circle){
    print("INSERT called");
  }
}