fix: 部分代码添加 mounted

This commit is contained in:
ryan
2019-02-02 23:57:18 +08:00
parent 57a253e508
commit 3238c3b67f
17 changed files with 164 additions and 112 deletions
lib
components
views/welcome_page
widgets
components
List/AnimatedList
Navigation/BottomNavigationBar
elements
Form
Button
DropdownButton
FloatingActionButton
IconButton
OutlineButton
RaisedButton
RawMaterialButton
CheckBox
Checkbox
CheckboxListTile
Media/Canvas
Canvas
CircleProgressBarPainter
PainterSketch
themes/Cupertino/CupertinoPicker

@ -33,11 +33,13 @@ class DisclaimerMsgState extends State<DisclaimerMsg> {
void refs(bool value) async { void refs(bool value) async {
final SharedPreferences prefs = await _prefs; final SharedPreferences prefs = await _prefs;
final bool unKnow = value; final bool unKnow = value;
setState(() { if (mounted) {
_unKnow = prefs.setBool("disclaimer::Boolean", unKnow).then((bool success) { setState(() {
return unKnow; _unKnow = prefs.setBool("disclaimer::Boolean", unKnow).then((bool success) {
return unKnow;
});
}); });
}); }
} }
@override @override
@ -135,12 +137,12 @@ class DisclaimerMsgState extends State<DisclaimerMsg> {
tristate: false, tristate: false,
value: _valBool, value: _valBool,
onChanged: (bool bol) { onChanged: (bool bol) {
setState(() { if(mounted) {
_valBool = bol; setState(() {
}); _valBool = bol;
// refs(bol); });
Navigator.of(context) }
.pop(); // here I pop to avoid multiple Dialogs Navigator.of(context).pop(); // here I pop to avoid multiple Dialogs
showAlertDialog(context); //here i call the same function showAlertDialog(context); //here i call the same function
}), }),
Text('不再自动提示', style: TextStyle(fontSize: 14)), Text('不再自动提示', style: TextStyle(fontSize: 14)),

@ -61,7 +61,9 @@ class _ListRefreshState extends State<ListRefresh> {
Future _getMoreData() async { Future _getMoreData() async {
if (!isLoading && _hasMore) { if (!isLoading && _hasMore) {
// 如果上一次异步请求数据完成 同时有数据可以加载 // 如果上一次异步请求数据完成 同时有数据可以加载
setState(() => isLoading = true); if (mounted) {
setState(() => isLoading = true);
}
//if(_hasMore){ // 还有数据可以拉新 //if(_hasMore){ // 还有数据可以拉新
List newEntries = await mokeHttpRequest(); List newEntries = await mokeHttpRequest();
//if (newEntries.isEmpty) { //if (newEntries.isEmpty) {

@ -24,52 +24,54 @@ class FourthPageState extends State<FourthPage> with TickerProviderStateMixin {
slideUpdateStream = new StreamController<SlideUpdate>(); slideUpdateStream = new StreamController<SlideUpdate>();
slideUpdateStream.stream.listen((SlideUpdate event) { slideUpdateStream.stream.listen((SlideUpdate event) {
setState(() { if(mounted) {
if (event.updateType == UpdateType.dragging) { setState(() {
slideDirection = event.direction; if (event.updateType == UpdateType.dragging) {
slidePercent = event.slidePercent; slideDirection = event.direction;
slidePercent = event.slidePercent;
if (slideDirection == SlideDirection.leftToRight) { if (slideDirection == SlideDirection.leftToRight) {
nextPageIndex = activeIndex - 1; nextPageIndex = activeIndex - 1;
} else if (slideDirection == SlideDirection.rightToLeft) { } else if (slideDirection == SlideDirection.rightToLeft) {
nextPageIndex = activeIndex + 1; nextPageIndex = activeIndex + 1;
} else { } else {
nextPageIndex = activeIndex; nextPageIndex = activeIndex;
}
} else if (event.updateType == UpdateType.doneDragging) {
if (slidePercent > 0.5) {
animatedPageDragger = new AnimatedPageDragger(
slideDirection: slideDirection,
transitionGoal: TransitionGoal.open,
slidePercent: slidePercent,
slideUpdateStream: slideUpdateStream,
vsync: this,
);
} else {
animatedPageDragger = new AnimatedPageDragger(
slideDirection: slideDirection,
transitionGoal: TransitionGoal.close,
slidePercent: slidePercent,
slideUpdateStream: slideUpdateStream,
vsync: this,
);
nextPageIndex = activeIndex;
}
animatedPageDragger.run();
} else if (event.updateType == UpdateType.animating) {
slideDirection = event.direction;
slidePercent = event.slidePercent;
} else if (event.updateType == UpdateType.doneAnimating) {
activeIndex = nextPageIndex;
slideDirection = SlideDirection.none;
slidePercent = 0.0;
animatedPageDragger.dispose();
} }
} else if (event.updateType == UpdateType.doneDragging) { });
if (slidePercent > 0.5) { }
animatedPageDragger = new AnimatedPageDragger(
slideDirection: slideDirection,
transitionGoal: TransitionGoal.open,
slidePercent: slidePercent,
slideUpdateStream: slideUpdateStream,
vsync: this,
);
} else {
animatedPageDragger = new AnimatedPageDragger(
slideDirection: slideDirection,
transitionGoal: TransitionGoal.close,
slidePercent: slidePercent,
slideUpdateStream: slideUpdateStream,
vsync: this,
);
nextPageIndex = activeIndex;
}
animatedPageDragger.run();
} else if (event.updateType == UpdateType.animating) {
slideDirection = event.direction;
slidePercent = event.slidePercent;
} else if (event.updateType == UpdateType.doneAnimating) {
activeIndex = nextPageIndex;
slideDirection = SlideDirection.none;
slidePercent = 0.0;
animatedPageDragger.dispose();
}
});
}); });
} }

@ -43,9 +43,11 @@ class _AnimatedListFullDefault extends State<AnimatedListFullDefault> {
void remove() { void remove() {
if (_selectedItem != null) { if (_selectedItem != null) {
_list.removeAt(_list.indexOf(_selectedItem)); _list.removeAt(_list.indexOf(_selectedItem));
setState(() { if(mounted) {
_selectedItem = null; setState(() {
}); _selectedItem = null;
});
}
} }
} }

@ -25,9 +25,11 @@ class _BottomNavigationBarFullDefault extends State {
int _currentIndex = 1; int _currentIndex = 1;
void _onItemTapped(int index) { void _onItemTapped(int index) {
setState(() { if(mounted) {
_currentIndex = index; setState(() {
}); _currentIndex = index;
});
}
} }
@override @override

@ -124,9 +124,11 @@ class DropdownButtonCustom extends StatelessWidget {
value: selectItemValue, value: selectItemValue,
//下拉菜单item点击之后的回调 //下拉菜单item点击之后的回调
onChanged: (T){ onChanged: (T){
parent.setState((){ if (parent.mounted) {
selectItemValue = T; parent.setState(() {
}); selectItemValue = T;
});
}
}, },
//设置阴影的高度 //设置阴影的高度
elevation: 24, elevation: 24,

@ -50,9 +50,11 @@ class _DemoState extends State<Demo> {
String buttonShapeType = 'border'; // 边框类型 String buttonShapeType = 'border'; // 边框类型
void setButtonShapeType(){ void setButtonShapeType(){
String _buttonShapeType = (buttonShapeType == 'border') ? 'radius' : 'border'; String _buttonShapeType = (buttonShapeType == 'border') ? 'radius' : 'border';
this.setState((){ if(mounted) {
buttonShapeType = _buttonShapeType; this.setState(() {
}); buttonShapeType = _buttonShapeType;
});
}
} }
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {

@ -45,9 +45,11 @@ class _DemoState extends State<Demo> {
String buttonShapeType = 'border'; // 边框类型 String buttonShapeType = 'border'; // 边框类型
void setButtonShapeType(){ void setButtonShapeType(){
String _buttonShapeType = (buttonShapeType == 'border') ? 'radius' : 'border'; String _buttonShapeType = (buttonShapeType == 'border') ? 'radius' : 'border';
this.setState((){ if(mounted) {
buttonShapeType = _buttonShapeType; this.setState(() {
}); buttonShapeType = _buttonShapeType;
});
}
} }
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {

@ -54,9 +54,11 @@ class _DemoState extends State<Demo> {
String buttonShapeType = 'border'; // 边框类型 String buttonShapeType = 'border'; // 边框类型
void setButtonShapeType(){ void setButtonShapeType(){
String _buttonShapeType = (buttonShapeType == 'border') ? 'radius' : 'border'; String _buttonShapeType = (buttonShapeType == 'border') ? 'radius' : 'border';
this.setState((){ if (mounted) {
buttonShapeType = _buttonShapeType; this.setState(() {
}); buttonShapeType = _buttonShapeType;
});
}
} }
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {

@ -53,9 +53,11 @@ class _DemoState extends State<Demo> {
String buttonShapeType = 'border'; // 边框类型 String buttonShapeType = 'border'; // 边框类型
void setButtonShapeType(){ void setButtonShapeType(){
String _buttonShapeType = (buttonShapeType == 'border') ? 'radius' : 'border'; String _buttonShapeType = (buttonShapeType == 'border') ? 'radius' : 'border';
this.setState((){ if(mounted) {
buttonShapeType = _buttonShapeType; this.setState(() {
}); buttonShapeType = _buttonShapeType;
});
}
} }
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {

@ -43,9 +43,11 @@ class _DemoState extends State<Demo> {
String buttonShapeType = 'border'; // 边框类型 String buttonShapeType = 'border'; // 边框类型
void setButtonShapeType(){ void setButtonShapeType(){
//String _buttonShapeType = (buttonShapeType == 'border') ? 'radius' : 'border'; //String _buttonShapeType = (buttonShapeType == 'border') ? 'radius' : 'border';
this.setState((){ if( mounted ) {
//buttonShapeType = _buttonShapeType; this.setState(() {
}); //buttonShapeType = _buttonShapeType;
});
}
} }
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {

@ -30,9 +30,11 @@ class _CheckboxDefault extends State {
tristate:false, tristate:false,
value: isChecked, value: isChecked,
onChanged: (bool bol) { onChanged: (bool bol) {
setState((){ if(mounted) {
isChecked = bol; setState(() {
}); isChecked = bol;
});
}
} }
); );
} }
@ -58,9 +60,11 @@ class CheckboxSelect extends StatelessWidget {
tristate:false, tristate:false,
value: parent.selectValue == this.index, value: parent.selectValue == this.index,
onChanged: (bool bol) { onChanged: (bool bol) {
parent.setState((){ if(parent.mounted) {
parent.selectValue = bol ? this.index : -1; parent.setState(() {
}); parent.selectValue = bol ? this.index : -1;
});
}
} }
); );
} }

@ -25,7 +25,9 @@ class _CheckboxListTileStateDefault extends State {
for (var i = 0; i < isChecks.length; i++) { for (var i = 0; i < isChecks.length; i++) {
isChecks[i] = value; isChecks[i] = value;
} }
setState(() => _value = value); if(mounted) {
setState(() => _value = value);
}
} }
bool isCheck=false; bool isCheck=false;
List<bool> isChecks=[false,false,false,false]; List<bool> isChecks=[false,false,false,false];
@ -55,9 +57,11 @@ class _CheckboxListTileStateDefault extends State {
activeColor: _value ? Colors.red : Colors.green, activeColor: _value ? Colors.red : Colors.green,
controlAffinity: ListTileControlAffinity.platform, controlAffinity: ListTileControlAffinity.platform,
onChanged: (bool){ onChanged: (bool){
setState(() { if(mounted) {
isChecks[0]=bool; setState(() {
}); isChecks[0] = bool;
});
}
}), }),
), ),
Center( Center(

@ -39,9 +39,11 @@ class CustomViewPageState extends State<CustomViewPage>
void initState() { void initState() {
super.initState(); super.initState();
getImage("assets/images/painterImg.jpeg").then((data) { getImage("assets/images/painterImg.jpeg").then((data) {
setState(() { if (mounted) {
image = data; setState(() {
}); image = data;
});
}
}); });
} }

@ -30,7 +30,9 @@ class CustomViewPageState extends State<CustomViewPage>
_doubleAnimation = Tween(begin: 0.0, end: 360.0).animate(_controller); _doubleAnimation = Tween(begin: 0.0, end: 360.0).animate(_controller);
_controller.addListener(() { _controller.addListener(() {
this.setState(() {}); if(mounted){
this.setState(() {});
}
}); });
onAnimationStart(); onAnimationStart();
} }

@ -30,9 +30,11 @@ class _PainterSketchDomeState extends State<PainterSketchDome> {
final Offset xy = box.globalToLocal(detail.globalPosition);// 重要需要转换以下坐标位置 final Offset xy = box.globalToLocal(detail.globalPosition);// 重要需要转换以下坐标位置
Offset p = Offset(xy.dx, xy.dy - 60); Offset p = Offset(xy.dx, xy.dy - 60);
//Offset p = Offset(detail.globalPosition.dx, detail.globalPosition.dy - 60); //Offset p = Offset(detail.globalPosition.dx, detail.globalPosition.dy - 60);
setState(() { if (mounted) {
nowPoints.add(p); setState(() {
}); nowPoints.add(p);
});
}
} }
void newGestureDetector(DragStartDetails detail) { void newGestureDetector(DragStartDetails detail) {
@ -45,9 +47,11 @@ class _PainterSketchDomeState extends State<PainterSketchDome> {
final Offset xy = box.globalToLocal(detail.globalPosition);// 重要需要转换以下坐标位置 final Offset xy = box.globalToLocal(detail.globalPosition);// 重要需要转换以下坐标位置
Offset p = Offset(xy.dx, xy.dy - 60); Offset p = Offset(xy.dx, xy.dy - 60);
//Offset p = Offset(detail.globalPosition.dx, detail.globalPosition.dy - 60); //Offset p = Offset(detail.globalPosition.dx, detail.globalPosition.dy - 60);
setState(() { if (mounted) {
nowPoints.add(p); setState(() {
}); nowPoints.add(p);
});
}
} }
void changeColor (Color c){ void changeColor (Color c){
@ -55,10 +59,12 @@ class _PainterSketchDomeState extends State<PainterSketchDome> {
LinePoints l = LinePoints(new List<Offset>.from(nowPoints), nowColor); LinePoints l = LinePoints(new List<Offset>.from(nowPoints), nowColor);
lines.add(l); lines.add(l);
} }
setState(() { if (mounted) {
nowPoints.clear(); setState(() {
nowColor = c; nowPoints.clear();
}); nowColor = c;
});
}
} }
List<Color> colors = <Color>[ List<Color> colors = <Color>[
@ -74,10 +80,12 @@ class _PainterSketchDomeState extends State<PainterSketchDome> {
Colors.cyanAccent,]; Colors.cyanAccent,];
void _tapClear(){ void _tapClear(){
setState(() { if (mounted) {
lines.clear(); setState(() {
nowPoints.clear(); lines.clear();
}); nowPoints.clear();
});
}
} }
@override @override

@ -108,7 +108,9 @@ class _CupertinoPickerDemoState extends State<CupertinoPickerDemo> {
backgroundColor: CupertinoColors.white,// 所有子节点下面的背景颜色 backgroundColor: CupertinoColors.white,// 所有子节点下面的背景颜色
useMagnifier:true,// 是否使用放大效果 useMagnifier:true,// 是否使用放大效果
onSelectedItemChanged: (int index) { // 当正中间选项改变时的回调 onSelectedItemChanged: (int index) { // 当正中间选项改变时的回调
setState(() => _selectedColorIndex = index); if (mounted) {
setState(() => _selectedColorIndex = index);
}
}, },
children: List<Widget>.generate(coolColorNames.length, (int index) { children: List<Widget>.generate(coolColorNames.length, (int index) {
return Center(child: return Center(child:
@ -144,7 +146,9 @@ class _CupertinoPickerDemoState extends State<CupertinoPickerDemo> {
CupertinoTimerPicker( CupertinoTimerPicker(
initialTimerDuration: timer, initialTimerDuration: timer,
onTimerDurationChanged: (Duration newTimer) { onTimerDurationChanged: (Duration newTimer) {
setState(() => timer = newTimer); if (mounted) {
setState(() => timer = newTimer);
}
}, },
), ),
); );
@ -176,7 +180,9 @@ class _CupertinoPickerDemoState extends State<CupertinoPickerDemo> {
mode: CupertinoDatePickerMode.date, mode: CupertinoDatePickerMode.date,
initialDateTime: date, initialDateTime: date,
onDateTimeChanged: (DateTime newDateTime) { onDateTimeChanged: (DateTime newDateTime) {
setState(() => date = newDateTime); if (mounted) {
setState(() => date = newDateTime);
}
}, },
), ),
); );
@ -206,7 +212,9 @@ class _CupertinoPickerDemoState extends State<CupertinoPickerDemo> {
mode: CupertinoDatePickerMode.time, mode: CupertinoDatePickerMode.time,
initialDateTime: time, initialDateTime: time,
onDateTimeChanged: (DateTime newDateTime) { onDateTimeChanged: (DateTime newDateTime) {
setState(() => time = newDateTime); if (mounted) {
setState(() => time = newDateTime);
}
}, },
), ),
); );
@ -236,7 +244,9 @@ class _CupertinoPickerDemoState extends State<CupertinoPickerDemo> {
mode: CupertinoDatePickerMode.dateAndTime, mode: CupertinoDatePickerMode.dateAndTime,
initialDateTime: dateTime, initialDateTime: dateTime,
onDateTimeChanged: (DateTime newDateTime) { onDateTimeChanged: (DateTime newDateTime) {
setState(() => dateTime = newDateTime); if (mounted) {
setState(() => dateTime = newDateTime);
}
}, },
), ),
); );