Выбор даты из базы данных sqflite с провайдером - PullRequest
0 голосов
/ 26 апреля 2020

Я хочу, чтобы мое приложение получало данные из sqflite по значению, предоставленному пользователем. Я использую провайдера для установки нового значения, но я не могу передать новое значение с провайдером в класс базы данных, потому что не в дереве виджетов, если я прав. Мой вопрос заключается в том, как я могу передать новое значение классу БД?

import 'dart:math';

import 'package:flutter/material.dart';
import 'package:google_fonts/google_fonts.dart';
import 'package:mcr/app.dart';
import 'package:mcr/bloc/bloc_meals.dart';
import 'package:mcr/db/breakfast_db_provider.dart';
import 'package:mcr/logic/day_selector_model.dart';
import 'package:provider/provider.dart';


class WeekdaysSelector extends StatefulWidget {
  @override
  _WeekdaysSelectorState createState() => _WeekdaysSelectorState();
}

class _WeekdaysSelectorState extends State<WeekdaysSelector> {
  final blocMeal = MealsBloc();
  final dateSelector = DaySelectorModel();
  int datePassed = 0;




  @override
  Widget build(BuildContext context) {
    var datePassing = Provider.of<DaySelectorModel>(context, listen: false);
    print("Data teraz!!!!!");
    return Padding(
      padding: const EdgeInsets.symmetric(horizontal:40),
      child: Row(
        mainAxisAlignment: MainAxisAlignment.spaceBetween,
        children: <Widget>[
          Consumer<DaySelectorModel>(
            builder: (context, dateSe, child){
              return GestureDetector(
              onTap:(){
                datePassed--;
                datePassing.daySelectorSub();

                print("datata !!!!!!!!!!!!!!!!${dateSelector.daySelected.day}");


            },

              child: Container(
                child: Icon(Icons.arrow_left,color: Colors.blueGrey,),

              ),
            );
            }
          ),
          Container(
            height: 20.0,                        
            child: GestureDetector(
              child: Padding(
                padding: EdgeInsets.symmetric(
                  horizontal: 0,
                  vertical:0
                ),
                child: Container(
                  height: 20,
                  width: 90.0,
                  child: Center(
                    child:Consumer<DaySelectorModel>(
                      builder:(context, dateSe, child){
                      print("diididickcickikiddicki${dateSe.daySelected.day} ");
                      return Container(
                        width: 150,
                        child: Text("${dateSe.daySelected.day}/ 0${dateSe.daySelected.month}/ ${dateSe.daySelected.year}",style: GoogleFonts.ubuntu(color: Colors.blueGrey,fontSize: 15,)));
                    })  
                  ),
                ),
              ),
            ),
          ),
          GestureDetector(
            onTap:(){

              datePassing.daySelectorAdd();
              print("datata !!!!!!!!!!!!!!!!${dateSelector.daySelected.day}");

            },
            child: Container(
              child: Icon(Icons.arrow_right,color: Colors.blueGrey,),
            ),
          ),
        ],
      ),
    );
  }
}  


and provider model

import 'package:flutter/material.dart';


class DaySelectorModel extends ChangeNotifier{

  static DateTime now = DateTime.now();
  static DateTime lastMidnight = now.subtract(Duration(
    hours: now.hour,
    minutes: now.minute,
    seconds: now.second,
    milliseconds: now.millisecond,
    microseconds: now.microsecond,
  ));

  int n = 0;
  DateTime _dateSelected = lastMidnight.add(Duration(days: 0));
  void daySelectorAdd(){
    n++;
    _dateSelected = lastMidnight.add(Duration(days: n));
    _dateSelected.add(Duration(days: n));
    notifyListeners(); 
    print("asddasd !!!!!!!!!!!!!!!!${_dateSelected.day}");
  }

    void daySelectorSub(){
    n--;
    _dateSelected = lastMidnight.add(Duration(days: n));
    _dateSelected.add(Duration(days: n));
    notifyListeners(); 
    print("asddasd !!!!!!!!!!!!!!!!${_dateSelected.day}");
  }


  DateTime get daySelected => _dateSelected;

  void resetDate(){
    _dateSelected = lastMidnight.add(Duration(days: 0));
    _dateSelected.add(Duration(days: 0));
  }



}

Поэтому я хочу, чтобы класс базы данных имел доступ к дате и выбрал новое значение. БД просто выбирается с помощью где dateCreated = dayselected.day ....

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...