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");
  }
}

Thursday, March 28, 2019

Flutter: Calling from Separate file, AppBar and FloatingActionButton




main.dart
===================================

import 'package:flutter/material.dart';
import 'src/app.dart';

void main(){
 
  var app = new App();

  runApp(app);

}

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



app.dart
===================================

//  Import flutter Helper Library
import 'package:flutter/material.dart';

//Create a class that will be our custom widget
//This class must extend the 'StatelessWidget' base class

class App extends StatelessWidget{

  @override
  Widget build(BuildContext context) {
    // TODO: implement build
    return MaterialApp(

        home: Scaffold(

          appBar: AppBar(
            title: Text("Let's see Image"),
          ),

          floatingActionButton: FloatingActionButton(

            child: Icon(Icons.add),

            onPressed: (){
              print('Hi Floating Action Button');
            },
          ),
        )
    );
  }

}

//Must define the buid method that returns
//the widget that *this* widget will show


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

Flutter: AppBar and FloatingActionButton in main function




import 'package:flutter/material.dart';

void main(){
  
  var app = MaterialApp(
    
    home: Scaffold(

      appBar: AppBar(
        title: Text("Let's see Image"),
      ),

      floatingActionButton: FloatingActionButton(

        child: Icon(Icons.add),

        onPressed: (){
          print('Hi Floating Action Button');
        },

      ),


    )

  );



  runApp(app);

}

First and Basic Flutter app




// I need to import a helper library// from flutter to get content on screen
import 'package:flutter/material.dart';

// Define 'main' function to run when our app starts
void main(){
  
  var app = MaterialApp(
    // Create new text widget to show some text    // on the screen    home: Text('Hi, There!'),
    
  );

//  Take that widget and get it on the screen  runApp(app);

}