dart
1import 'package:flutter/material.dart'; 2import 'package:flip_card/flip_card.dart'; 3import "package:http/http.dart" as http; 4import 'feedback_model.dart'; 5import 'package:google_sheet_db/feedback_model.dart'; 6import 'dart:convert' as convert; 7import 'package:google_sheet_db/background.dart'; 8import 'dart:math'; 9import 'package:flutter/cupertino.dart'; 10 11class WordsTestPage extends StatefulWidget { 12 13 State<WordsTestPage> createState() { 14 return _State(); 15 } 16} 17 18class _State extends State<WordsTestPage> { 19String E1 = ''; 20String J1 = ''; 21 22 // ignore: deprecated_member_use 23 List<FeedbackModel> feedbacks = List<FeedbackModel>(); 24 25 getFeedbackFromSheet() async { 26 var raw = await http.get( 27 "https://script.google.com/macros/s/...."); 28 29 var jsonFeedback = convert.jsonDecode(raw.body); 30 //print('this is json Feedback $jsonFeedback'); 31 32 // feedbacks = jsonFeedback.map((json) => FeedbackModel.fromJson(json)); 33 34 jsonFeedback.forEach((element) { 35 //print('$element THIS IS NEXT>>>>>>>'); 36 FeedbackModel feedbackModel = new FeedbackModel(); 37 feedbackModel.no = element['no']; 38 feedbackModel.name = element['name']; 39 feedbackModel.name2 = element['name2']; 40 41 42 feedbacks.add(feedbackModel); 43 }); 44 //print('${feedbacks[3]}'); 45 E1 = feedbacks[4].name; 46 J1 = feedbacks[4].name2; 47 print('$E1'); 48 print('$J1'); 49 50 if(mounted) { 51 setState(() {}); 52 } 53 } 54 55 56 void initState() { 57 getFeedbackFromSheet(); 58 super.initState(); 59 } 60 61 62 Widget build(BuildContext context) { 63 64 final list = nextNumbers(5, min: 1, max: feedbacks.length-1); 65 print(list); 66 int a = list[0]; 67 68 return Scaffold( 69 appBar: AppBar( 70 title: Text('単語テスト'), 71 ), 72 body: Stack( 73 children: [ 74 AppBackground(), 75 Column( 76 mainAxisAlignment: MainAxisAlignment.center, 77 children: <Widget>[ 78 FlipCard( 79 front: Card( 80 shape: RoundedRectangleBorder( 81 borderRadius: BorderRadius.circular(12), 82 ), 83 child: Container( 84 padding: EdgeInsets.all(15), 85 width: 400, 86 height: 60, 87 child: Column( 88 crossAxisAlignment: CrossAxisAlignment.start, 89 children: [ 90 Text( 91 feedbacks[a].name, 92 style: TextStyle( 93 fontSize: 20, 94 //fontWeight: FontWeight.bold, 95 ), 96 ), 97 ], 98 ), 99 ), 100 ), // カード前面に表示するWidget 101 back: Card( 102 shape: RoundedRectangleBorder( 103 borderRadius: BorderRadius.circular(12), 104 ), 105 child: Container( 106 padding: EdgeInsets.all(15), 107 width: 400, 108 height: 60, 109 child: Column( 110 crossAxisAlignment: CrossAxisAlignment.start, 111 children: [ 112 Text( 113 feedbacks[a].name2, 114 // J1.toString(), 115 style: TextStyle( 116 fontSize: 20, 117 //fontWeight: FontWeight.bold, 118 ), 119 ), 120 ], 121 ), 122 ), 123 ), // カード背面に表示するWidget 124 direction: FlipDirection.HORIZONTAL, // カード回転向き(HORIZONTAL:横<デフォルト>, VERTICAL:縦) 125 flipOnTouch: true, // タッチ可否(true:カード部タップで回転する<デフォルト>, false:タップしても回転しない) 126 speed: 500, // 回転スピード(500ミリ秒<デフォルト>) 127 onFlip: () {}, // タップイベント 128 onFlipDone: (isFront) {}, // タップイベント(前面かどうかbool値で判断できる) 129 ), 130 131 132 ], 133 134 ), 135 ], 136 ), 137 ); 138 } 139 140int nextNumber({int min, int max}) { 141 return min + Random().nextInt(max - min + 1); 142} 143 144 List<int> nextNumbers(int length, {int min, int max}) { 145 final numbers = Set<int>(); 146 147 while(numbers.length < length){ 148 final number = nextNumber(min: min, max: max); 149 numbers.add(number); 150 } 151 return List.of(numbers); 152 153 } 154 155} 156
◎現状
最終的には表示されるのですが
一度エラーが出て2秒後くらいに正しい画面が生成されます。
以下の写真を参照願います。
2回読み込まれているのかな、、、とも思います。
教えていただけたら助かります。よろしくお願いいたします。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2021/09/08 12:44
2021/09/09 03:39
2021/09/09 03:48
2021/09/09 04:01