如何解决将分数存储在 hive Flutter 上
我想知道如何将我的测验分数存储在 hive 数据库中。我看了一堆视频,他们总是在 void main()async{} 上初始化 main.dart 上的代码。除了在 void main 中初始化之外,还有其他方法可以工作吗?并且。我知道我错过了我的应用程序中的很多代码和编码,我知道我会出错。但由于我不知道从哪里开始以及如何开始,我不知道我应该怎么做才能解决我的错误。
df.groupby('Group').filter(lambda x: x['dist'].notna().all())
和我的 pubspec.yaml
import 'dart:async';
import 'dart:convert';
import 'dart:developer';
import 'dart:io';
import 'package:baybay_app/Quiz/NextLevel class.dart';
import 'package:baybay_app/Quiz/QuizHome.dart';
import 'file:///C:/Users/me/AndroidStudioProjects/baybay_app/lib/Quiz/Results/ResultPage.dart';
import 'package:Flutter/material.dart';
import 'package:Flutter/services.dart';
import 'package:hive/hive.dart';
import 'package:path_provider/path_provider.dart' as path_provider;
import 'package:path_provider/path_provider.dart';
class Quizjson extends StatefulWidget {
@override
_QuizjsonState createState() => _QuizjsonState();
}
class _QuizjsonState extends State<Quizjson> {
@override
Widget build(BuildContext context) {
return FutureBuilder(
future: DefaultAssetBundle.of(context).loadString('assets/Sample.json',cache: false),builder: (context,snapshot){
List mydata = json.decode(snapshot.data.toString());
if(mydata == null){
return Scaffold(
body: Center(
child: Text(
"Loading",),);
}else{
return quizpage(mydata: mydata);
}
}
);
}
}
class quizpage extends StatefulWidget {
Box<int> marksBox;
String roundName;
var mydata;
quizpage({Key key,@required this.mydata}): super(key: key);
@override
_quizpageState createState() => _quizpageState(mydata);
}
class _quizpageState extends State<quizpage> {
var mydata;
String roundName;
_quizpageState(this.mydata);
@override
Widget build(BuildContext context) {
SystemChrome.setPreferredOrientations(
[DeviceOrientation.portraitDown,DeviceOrientation.portraitUp]);
return Scaffold(
body: Column(
mainAxisAlignment: MainAxisAlignment.center,children: [
Expanded(
flex: 3,child: Container(
padding: EdgeInsets.all(20.0),alignment: Alignment.bottomLeft,child: Text(mydata[0][question.toString()])
),Expanded(
flex: 6,child: Container(
child: Column(
children: [
Row(
children: [
ChoiceButton("a"),ChoiceButton("b")
]
),Row(
children: [
ChoiceButton("c"),ChoiceButton("d"),]
)
]
),Expanded(
flex: 1,child: Container(
alignment: Alignment.topCenter,child: Center(
child: Text(
showtimer,style: TextStyle(
fontSize: 20.0
),],)
);
}
Widget ChoiceButton(String k) {
return Padding(
padding: EdgeInsets.symmetric(
vertical: 10.0,horizontal: 10.0),child: MaterialButton(
onpressed: () => CheckAnswer(k),child: Text(
mydata[1][question.toString()][k],style: TextStyle(
color: Colors.white
)),color: btncolor[k],);
}
Color colorsToShow = Colors.brown[700];
Color right = Colors.greenAccent[700];
Color wrong = Colors.redAccent[700];
int mark = 0;
int question = 1;
int timer = 30;
String showtimer = "30";
bool canceltimer = false;
bool isComplete = false;
Map<String,Color> btncolor = {
"a": Colors.brown[700],"b": Colors.brown[700],"c": Colors.brown[700],"d": Colors.brown[700],};
Future HiveSample() async{
}
@override
void initState() {
starttimer();
super.initState();
}
@override
void setState(fn) {
if (mounted) {
super.setState(fn);
}
}
void starttimer() async {
const onesec = Duration(seconds: 1);
Timer.periodic(onesec,(Timer t) {
setState(() {
if (timer < 1) {
t.cancel();
NextQuestion();
}
else if (canceltimer == true) {
t.cancel();
}
else {
timer = timer - 1;
}
showtimer = timer.toString();
});
});
}
void NextQuestion() {
canceltimer = false;
timer = 30;
setState(() {
if (question < 10) {
question++;
}
else {
Navigator.of(context).pushReplacement(MaterialPageRoute(
builder: (context) => ResultPage(mark: mark),));
}
btncolor["a"] = Colors.brown[700];
btncolor["b"] = Colors.brown[700];
btncolor["c"] = Colors.brown[700];
btncolor["d"] = Colors.brown[700];
isComplete = true;
});
starttimer();
}
void CheckAnswer(String k) async {
final marksBox = await Hive.openBox('marks');
if (mydata[2][question.toString()] == mydata[1][question.toString()][k]) {
mark = mark + 5;
colorsToShow = right;
marksBox.put(question,mark);
}
else {
colorsToShow = wrong;
}
setState(() {
btncolor[k] = colorsToShow;
});
Timer(Duration(seconds: 2),NextQuestion);
}
}
dependencies:
Flutter:
sdk: Flutter
carousel_slider: ^2.3.1
assets_audio_player: ^2.0.13+1
hive: ^1.4.4+1
path_provider: ^1.6.27
hive_Flutter: ^0.3.1
flip_card: ^0.4.4
speech_recognition: ^0.3.0+1
# The following adds the Cupertino Icons font to your application.
# Use with the CupertinoIcons class for iOS style icons.
cupertino_icons: ^1.0.0
dev_dependencies:
Flutter_test:
sdk: Flutter
hive_generator: ^0.8.2
build_runner: ^1.10.13
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。