Flutter 1.9.1 Provider 3.1.0
我目前正在构建我的第一个应用程序,我决定现在就跳到状态管理上,以免在以后的构建中陷入泥潭。
我已经设置了一个width_restriction_provider;
class WidthRestrictionProvider extends ChangeNotifier {
int _widthRestriction = 140;
int get widthRestriction => _widthRestriction;
set widthRestriction(int val) {
_widthRestriction = val;
notifyListeners();
}
changeWidthSlider(int newValue) {
_widthRestriction = newValue;
notifyListeners();
}
}这是我的滑块小工具;
class WidthSlider extends StatelessWidget {
@override
Widget build(BuildContext context) {
final WidthRestrictionProvider widthRestrictionProvider =
Provider.of<WidthRestrictionProvider>(context);
return Container(
child: Slider(
min: 140.0,
max: 420.0,
onChanged: () => widthRestrictionProvider.changeWidthSlider(newValue);
),
);
}
}我尝试了许多不同的方法,但在此过程中我一直遇到问题。
如何成功地将新的滑块值传递回提供程序?
我目前正在学习Flutter和Dart,所以如果这个问题有点基础的话,我很抱歉。
发布于 2021-07-24 09:20:32
我已经通过为范围滑块使用statefulWidget解决了这个问题。希望它能为你工作
class RangeSliderPricing extends StatefulWidget {
const RangeSliderPricing({Key? key}) : super(key: key);
@override
_RangeSliderPricingState createState() => _RangeSliderPricingState();
}
class _RangeSliderPricingState extends State<RangeSliderPricing> {
RangeValues _currentRangeValues = RangeValues(20, 40);
@override
Widget build(BuildContext context) {
return RangeSlider(
values: _currentRangeValues,
min: 0,
max: 100,
divisions: 5,
labels: RangeLabels(
_currentRangeValues.start.round().toString(),
_currentRangeValues.end.round().toString(),
),
onChanged: (RangeValues values) {
print('on change working $values');
setState(() {
_currentRangeValues = values;
});
context.read<ProductController>().fliterByPriceRange(
priceStart: values.start.round().toDouble(),
priceEnd: values.end.round().toDouble());
},
);
}
}https://stackoverflow.com/questions/58123829
复制相似问题