這是我的輸出

當第一次打開應用程式應該這樣顯示但選擇一個單選按鈕并關閉打開然后應該顯示選擇的一個 EX:- 當用戶第一次打開應用程式時應該取消選擇所有值,然后用戶選擇增長并單擊下一個按鈕并在再次重新打開后關閉應用程式,然后應將增長顯示為所選值。
像這樣

我的代碼
import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart';
import 'package:shared_preferences/shared_preferences.dart';
class RadioButtonScreen extends StatefulWidget {
const RadioButtonScreen({Key? key}) : super(key: key);
@override
State<RadioButtonScreen> createState() => _RadioButtonScreenState();
}
class _RadioButtonScreenState extends State<RadioButtonScreen> {
@override
void initState() {
super.initState();
dropdownValueDisease = level;
checkValueDisease();
}
// data which child
// data which child
String? dropdownValueDisease;
// // List of items in our dropdown menu
String level = 'y';
//IF "dropdownValueMembers" is empty pass "which" word as a initial value if al ready selected then pass the shared preference value
checkValueDisease() {
_getDataDisease();
}
_saveDataDisease(String dropdownDiseaseShared) async {
SharedPreferences sharedPreferences = await SharedPreferences.getInstance();
sharedPreferences.setString("Disease", dropdownDiseaseShared);
}
_getDataDisease() async {
SharedPreferences sharedPreferences = await SharedPreferences.getInstance();
dropdownValueDisease = sharedPreferences.getString("Disease") ?? level;
setState(() {});
}
//
//
@override
Widget build(BuildContext context) {
double height = MediaQuery.of(context).size.height;
return Scaffold(
body: Container(
child: Column(
children: [
SizedBox(
height: height * 0.72,
width: (MediaQuery.of(context).size.width),
child: Column(
children: <Widget>[
const SizedBox(
height: 10,
),
Row(
children: <Widget>[
Expanded(
child: ListTile(
minLeadingWidth: 1,
leading: Column(
mainAxisAlignment: MainAxisAlignment.center,
crossAxisAlignment: CrossAxisAlignment.center,
children: [
Icon(
Icons.brightness_1,
color: Colors.black,
size: 10.0,
),
],
),
title: const Text(
"taking",
style: TextStyle(
fontSize: 13.3, fontWeight: FontWeight.w800),
),
trailing: Radio(
value: "talking",
groupValue: level,
onChanged: (value) {
setState(() {
level = value.toString();
});
},
),
),
),
],
),
Row(
children: <Widget>[
Expanded(
child: ListTile(
minLeadingWidth: 1,
leading: Column(
mainAxisAlignment: MainAxisAlignment.center,
crossAxisAlignment: CrossAxisAlignment.center,
children: [
Icon(
Icons.brightness_1,
color: Colors.black,
size: 10.0,
),
],
),
title: const Text(
"grow",
style: TextStyle(
fontSize: 13.3, fontWeight: FontWeight.w800),
),
trailing: Radio(
value: "grow",
groupValue: level,
onChanged: (value) {
setState(() {
level = value.toString();
});
},
),
),
),
],
),
Row(
children: <Widget>[
Expanded(
child: ListTile(
minLeadingWidth: 1,
leading: Column(
mainAxisAlignment: MainAxisAlignment.center,
crossAxisAlignment: CrossAxisAlignment.center,
children: [
Icon(
Icons.brightness_1,
color: Colors.black,
size: 10.0,
),
],
),
title: const Text(
"listing ",
style: TextStyle(
fontSize: 13.3, fontWeight: FontWeight.w800),
),
trailing: Radio(
value: "listing",
groupValue: level,
onChanged: (value) {
setState(() {
level = value.toString();
});
},
),
),
),
],
),
Row(
children: <Widget>[
Expanded(
child: ListTile(
minLeadingWidth: 1,
leading: Column(
mainAxisAlignment: MainAxisAlignment.center,
crossAxisAlignment: CrossAxisAlignment.center,
children: [
Icon(
Icons.brightness_1,
color: Colors.black,
size: 10.0,
),
],
),
title: const Text(
"eye",
style: TextStyle(
fontSize: 13.3, fontWeight: FontWeight.w800),
),
trailing: Radio(
value: "eye",
groupValue: level,
onChanged: (value) {
setState(() {
level = value.toString();
});
},
),
),
),
],
),
Row(
children: <Widget>[
Expanded(
child: ListTile(
minLeadingWidth: 1,
leading: Icon(
Icons.brightness_1,
color: Colors.black,
size: 10.0,
),
title: const Text(
"autism",
style: TextStyle(
fontSize: 13.3, fontWeight: FontWeight.w800),
),
trailing: Radio(
value: "autism",
groupValue: level,
onChanged: (value) {
setState(() {
level = value.toString();
});
},
),
),
),
],
),
],
),
),
Padding(
padding: const EdgeInsets.only(
bottom: 0.0,
),
child: SizedBox(
width: 160.0,
height: 35.0,
child: ElevatedButton(
style: ButtonStyle(
shape: MaterialStateProperty.all<RoundedRectangleBorder>(
RoundedRectangleBorder(
borderRadius: BorderRadius.circular(18.0),
side: const BorderSide(
color: Colors.blueAccent,
),
),
),
),
onPressed: () {
_saveDataDisease(level);
},
child: const Text('next')),
),
),
],
),
),
);
}
}
uj5u.com熱心網友回復:
您正在嘗試保存dropdownValueDisease,但您應該保存level價值:
onPressed: () {
_saveDataDisease(level);
},
同樣在您的 _getDataDisease 中,您需要將SharedPreferences值傳遞給levelnot dropdownValueDisease:
_getDataDisease() async {
SharedPreferences sharedPreferences = await SharedPreferences.getInstance();
dropdownValueDisease = sharedPreferences.getString("Disease") ?? level;
level = dropdownValueDisease;
setState(() {});
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/520957.html
標籤:扑镖共享偏好
上一篇:獲取此RangeError(索引):無效值:有效值范圍為空:1嘗試將json資料填充到ListView.builder
