How to save data using sqflite in flutter?

I have develop little application in flutter , to do some calculations , i'm loading default values for calculation from the sqflite database using BehaviorSubject stream ,

And then i display data in screen , by tapping calculate button user can calculate the result and result is displayed in flutter table widget.

Now i need to save calculation in database for future references ,

the question is how to access the calculation results inside table.

Here is my code.

My BloC class

class ConcreteBLoC extends EstimationBlocBase {
  final int typeId;
  BLoCProvider provider;

  BehaviorSubject<EstimationResult> _subjectCalcResult;

  ConcreteBLoC(this.typeId) {
     provider = BLoCProvider(typeId);
    _subjectCalcResult = new BehaviorSubject<EstimationResult>();

  Observable<EstimationResult> resultObservable() {

  void updateResult(String length, String width, String thick, int selectedRatio) {
    provider.calculateResult(length, width, thick, selectedRatio);

  void dispose() {

in this bloc i load default data and add to sink.

My BlocProvider

class BLoCProvider {
    // ...... More codes here
  Future<EstimationResult> getInitialData() async{
    List<Material> resultList = new List();
    List<Material> materials = await materialRepository.getMaterialsForEsType(id); 
    var material;
      material = new Material(), =, =,
      material.qty = 0.0,
      material.unit = "kg",


    var estimation = new EstimationResult();
    estimation.materials = resultList;
    estimation.totalRootMaterialValue = 0.0;
    estimation.rootMatrialText = "Total concrete area : ";
    return estimation;
  // ....... More codes here!

Load initial data from database

My Statefulwidget build method

  Widget build(BuildContext context) {
    return Scaffold(
        appBar: ... APP BAR CODE
        body: GestureDetector(
          onTap: () {
            FocusScope.of(context).requestFocus(new FocusNode());
          child: CustomScrollView(
            slivers: <Widget>[
                delegate: SliverChildListDelegate([
                    padding: EdgeInsets.all(15.0),
                    child: StreamBuilder<EstimationResult>(
                        stream: _bloc.resultObservable(),
                        builder: (context,
                            AsyncSnapshot<EstimationResult> snapshot) {
                          if (snapshot.hasData) {
                            return _buildMainUI(;
                            return new Center(child: new CircularProgressIndicator());

Create widget UI using stream data

 Widget _buildMainUI(EstimationResult data) {
    return Column(
      children: <Widget>[
          key: _formKey,
          autovalidate: _autoValidate,
          child: _formUI(),
          alignment: MainAxisAlignment.spaceEvenly,
          children: <Widget>[
            cw.getRaisedButton(Colors.white, Theme.of(context).buttonColor,
                "CALCULATE", _calculate),
                Colors.white, Theme.of(context).buttonColor, "SAVE", _save),
                Colors.white, Theme.of(context).buttonColor, "RESET", _reset),
          mainAxisSize: MainAxisSize.max,

In here i have calculate button , when user click on calculate button , that will call to bloc's calculate method and return some calculation results and that will be reflect on again _buildCalculationResultTable

Now i need to know how to save this result to db ?

Can't we save data using Bloc's BehaviorSubject Or do we have to pass a model with data to bloc again ?

Im quite new to flutter so , please help me to resolve this ,