#flutter #dart #dataprovider
Вопрос:
У меня возникли некоторые проблемы с пониманием поставщика данных в flutter. Поскольку у меня есть целая куча кодов , я просто копирую важную часть здесь.
У меня есть класс модели, как указано ниже:
class RestrictedArea {
String areaCovered;
String ChosenAreaToCheck;
RestrictedArea({
this.areaCovered,
this.ChosenAreaToCheck
});
}
Класс обработчика/поставщика данных, как указано ниже:
import 'package:flutter/cupertino.dart';
import 'package:rider_app/Models/RangeofRestrictedAreas.dart';
import 'package:rider_app/Models/address.dart';
import 'package:rider_app/Models/history.dart';
class AppData extends ChangeNotifier
{
RestrictedArea AreaCovered;
Address pickUpLoacation,dropOffLocation;
String earnings="0";
int countTrips=0;
List<String> tripHistoryKeys=[];
List<History> tripHistoryDataList = [];
void updatePickUpLocationAddress(Address pickUpAddress){
pickUpLoacation=pickUpAddress;
notifyListeners();
}
void updateDropOffLocationAddress(Address dropOffAddress){
dropOffLocation=dropOffAddress;
notifyListeners();
}
void updateEarnings(String updatedEarnings)
{
earnings = updatedEarnings;
notifyListeners();
}
void updateTripsCounter(int tripCounter ){
countTrips=tripCounter;
notifyListeners();
}
void updateTripKeys(List<String> newKeys){
tripHistoryKeys=newKeys;
notifyListeners();
}
void updateTripHistoryData(History eachHistory){
tripHistoryDataList.add(eachHistory);
notifyListeners();
}
void updateAreaCovered(RestrictedArea areaCovered){
AreaCovered=areaCovered;
notifyListeners();
}
}
Теперь я хочу поделиться данными , связанными с классом RestrictedArea, между двумя файлами dart.
Сеттер в одном файле dart-List.dart
Container(
alignment: Alignment.center,
decoration: BoxDecoration(
color:Colors.lightGreen[400],
borderRadius: BorderRadius.circular(5.0),
),
child: Padding(
padding: EdgeInsets.all(3.0),
child: ElevatedButton(
child: Text(
'Set the range specified',
style: TextStyle(fontSize: 20.0),
),
onPressed: () {
Provider.of<AppData>(context,listen: false).updateAreaCovered(CoverableRange);
displayToastMessage1("The specified area has been set.", context);
},
),
),
Please note that I am setting the data using button onPressed.
Now , the problem is with getting or retrieving this data in another class or dart file-Search.dart
**
String areaCovered=Provider.of<AppData(context,listen:false).AreaCovered.ChosenAreaToCheck??"";
print("s");
print(areaCovered);
),
**
Теперь это печатает значения null no no, я не могу распечатать данные в виде строки-«покрытая область». В чем заключается решение. Кто-нибудь может мне помочь, пожалуйста?