我对 Flutter(和编程)还很陌生。
我有一个 BottomSheet,其中包含 ChoiceChips 和一些开关。一切都很好,但是当我关闭 BottomSheet 时,它不会保存开关和选择芯片的状态。 我正在尝试找到一种方法,即使在关闭 BottomSheet 时也能保留我的选择和开关状态。
即使关闭 BottomSheet 时也要保存数据,即保存用户数据,例如用户选择执行此操作的值。如果您不使用任何类型的状态管理(如 Provider 和 ),则必须将数据保存在父窗口小部件中flutter_bloc等 此代码将为您提供如何执行此操作的一个很好的示例,然后您可以在代码中使用您的自定义
import 'package:flutter/material.dart';
void main() => runApp(MyApp());
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return MaterialApp(
title: 'Bottom Sheet Demo',
home: MyHomePage(),
);
}
}
class MyHomePage extends StatefulWidget {
@override
_MyHomePageState createState() => _MyHomePageState();
}
class _MyHomePageState extends State<MyHomePage> {
List<String> selectedChips = [];
bool switchValue = false;
final chipOptions = ['Item 1', 'Item 2', 'Item 3'];
@override
Widget build(BuildContext context) {
return Scaffold(
body: Center(
child: ElevatedButton(
child: Text('Open BottomSheet'),
onPressed: () {
showModalBottomSheet(
context: context,
builder: (context) {
return Column(
mainAxisSize: MainAxisSize.min,
children: [
Wrap(
children: chipOptions.map((item) {
return ChoiceChip(
label: Text(item),
selected: selectedChips.contains(item),
selectedColor: Colors.green,
onSelected: (selected) {
setState(() {
selected
? selectedChips.add(item)
: selectedChips.remove(item);
});
},
);
}).toList(),
),
Switch(
value: switchValue,
onChanged: (value) {
setState(() {
switchValue = value;
});
},
),
ElevatedButton(
child: Text('Close'),
onPressed: () {
Navigator.pop(context);
},
)
],
);
});
},
),
),
);
}
}
如果我的回答有帮助,请不要忘记投票🙏️并使其成为接受的答案