每当我试图更改可见性的状态时,setState都不起作用,尽管在控制台中打印的消息被更正了。这是我的浮动操作按钮缠绕了几个小部件。问题是每当我点击它时,isVisible属性应该被更改为false,它应该是不可见的,但这并没有发生。“Pressed Undo”(按下撤消)打印在控制台中。
import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart';
import 'package:flutter/services.dart';
import 'package:maya/screens/profile.dart';
import 'package:maya/screens/screen.dart';
import 'package:maya/screens/settings.dart';
import 'package:avatar_glow/avatar_glow.dart';
import 'package:tcard/tcard.dart';
import 'package:glass_kit/glass_kit.dart';
import 'package:fluttertoast/fluttertoast.dart';
class MainPage extends StatefulWidget {
@override
_MainPageState createState() => _MainPageState();
}
class _MainPageState extends State<MainPage> {
double likeBtnWidth = 75;
double dislikeBtnWidth = 75;
TCardController _controller = TCardController();
int cardNumber;
bool isVisible; //here is the declaration
Widget _layoutDetails() {
@override
Orientation orientation = MediaQuery.of(context).orientation;
setState(() {
likeBtnWidth = 150;
dislikeBtnWidth = 150;
});
List<String> images = [
'assets/images/girls/girl1.png',
'assets/images/girls/girl2.png',
'assets/images/girls/girl3.png',
'assets/images/girls/girl4.png',
'assets/images/girls/girl5.png',
'assets/images/girls/girl6.png',
];
List<String> personalDetails = [
'Prakriti Regmi%20%Lets read Murakami together.%Chabahil (1 mi away)',
'Dristi Sigdel%19%Belle áme%Sundhara (2 mi away)',
'Prajita Upreti%19%Here to make friends.%Makalbari (2.3 mi away)',
'Sugandhi C.%21%Not looking for any drama.%Bhaktapur (7 mi away)',
"Pawana Shrestha%20%Why am I here for?%Attarkhel",
"Tanuja Shrestha%21%Hi there! ♐︎%Dakshin Dhoka"
];
List<Widget> cards = List.generate(
images.length < personalDetails.length
? images.length
: personalDetails.length,
(int index) {
return GlassContainer.frostedGlass(
height: 800,
width: 800,
child: Padding(
padding: const EdgeInsets.fromLTRB(30, 20, 30, 0),
child: Container(
child: Stack(
children: [
Column(
children: [
SizedBox(
height: 20,
),
Center(child: _picture(images[index])),
SizedBox(
height: 30,
),
_bio(personalDetails[index].split("%")),
SizedBox(
height: 10,
),
_likeUnlikeButtons()
],
),
Positioned(
left: 0,
bottom: 15,
child: SizedBox(
width: 30,
child: Visibility(
visible: isVisible,
child: FloatingActionButton(
onPressed: () {
setState(() {
isVisible = false; //this is the problamatic part.
print("pressed undo");
});
},
child: Text("helllllo"),
)
replacement: Container(),
),
),
),
],
),
)),
);
// );
},
);
return SizedBox(
width: double.infinity,
height: double.infinity,
child: TCard(
controller: _controller,
onForward: (index, info) {
if (info.direction == SwipDirection.Right) {
Fluttertoast.showToast(
msg: "Liked",
toastLength: Toast.LENGTH_SHORT,
gravity: ToastGravity.CENTER,
timeInSecForIosWeb: 1,
backgroundColor: Colors.yellow,
textColor: Colors.black,
fontSize: 16.0);
}
setState(() {
isFirstCard = false;
});
},
onBack: (index, info) {
// _controller.forward(SwipDirection);
// print(index);
},
onEnd: () {
_controller.reset();
},
size: Size(double.infinity, double.infinity),
cards: cards,
),
);
);
}
}
@override
Widget build(BuildContext context) {
return _layoutDetails();
}
}
),
);
}
}
isVisibile需要在_MainPageState的build方法中声明,以便更新小部件。