Forum Replies Created
-
AuthorPosts
-
August 1, 2022 at 7:28 AM in reply to: praktik provider par 3 ( error terakhir di rubah null ) #103314
note_item.dart
import 'package:flutter/material.dart'; import 'package:praktik_state_management/icons/icon_pin.dart'; import 'package:praktik_state_management/models/note.dart'; import 'package:praktik_state_management/provider/notes.dart'; import 'package:praktik_state_management/screens/add_or_detail_screen.dart'; import 'package:provider/provider.dart'; class NoteItem extends StatefulWidget { //NoteItem({Key? key}) : super(key: key); final String id; NoteItem({ @required this.id, }); @override State<NoteItem> createState() => _NoteItemState(); } class _NoteItemState extends State<NoteItem> { @override Widget build(BuildContext context) { final notesProvider = Provider.of<Notes>(context, listen: false); Note note = notesProvider.getNote(widget.id); return GestureDetector( onTap: () => Navigator.of(context) .pushNamed(addOrDetailScreen.routeName, arguments: note.id), child: GridTile( header: Align( alignment: Alignment.topRight, child: IconButton( onPressed: () { notesProvider.toogleIsPinned(note.id); }, icon: Icon(note.isPinned ? Icon_pin.pin : Icon_pin.pin_outline), )), child: Container( decoration: BoxDecoration( border: Border.all(), borderRadius: BorderRadius.circular(10), ), child: Text(note.updateAt.toString())), footer: ClipRRect( borderRadius: BorderRadius.only( bottomLeft: Radius.circular(10), bottomRight: Radius.circular(10)), child: GridTileBar( title: Text(note.title), backgroundColor: Colors.grey, ), ), ), ); } }August 1, 2022 at 7:27 AM in reply to: praktik provider par 3 ( error terakhir di rubah null ) #103313notes.dart
import 'package:flutter/cupertino.dart'; import 'package:praktik_state_management/models/note.dart'; class Notes with ChangeNotifier { List<Note> _notes = [ Note( id: 'N1', title: 'Catatan Materi Flutter', note: 'Flutter merupakan Software Development Kit (SDK) yang bisa membantu developer dalam membuat aplikasi mobile cross platform. Kelas ini akan mempelajari pengembangan aplikasi mobile yang dapat dijalankan baik di IOS maupun di Android', updatedAt: DateTime.parse('2021-05-19 20:33:33'), createdAt: DateTime.parse('2021-05-19 20:33:33'), ), Note( id: 'N2', title: 'Target Pembelajaran Flutter', note: 'Peserta dapat mengembangkan aplikasi mobile (IOS dan Android) menggunakan flutter,\nPeserta memahami konsep pengembangan aplikasi menggunakan flutter,\nPeserta dapat menjalankan aplikasi mobile di IOS dan Android ataupun Emulator,\nPeserta memahami bahasa pemrograman Dart,\nPeserta dapat mendevelop aplikasi mobile menggunakan flutter dan dart dari dasar secara berurutan.', updatedAt: DateTime.parse('2021-05-20 20:53:33'), createdAt: DateTime.parse('2021-05-20 20:53:33'), ), Note( id: 'N3', title: 'Belajar Flutter di ITBOX', note: 'Jangan lupa belajar flutter dengan video interactive di ITBOX.', updatedAt: DateTime.parse('2021-05-20 21:22:33'), createdAt: DateTime.parse('2021-05-20 21:22:33'), ), Note( id: 'N4', title: 'Resep nasi goreng', note: 'Nasi putih 1 piring\nBawang putih 2 siung, cincang halus\nKecap manis atau kecap asin sesuai selera\nSaus sambal sesuai selera\nSaus tiram sesuai selera\nGaram secukupnya\nKaldu bubuk rasa ayam atau sapi sesuai selera\nDaun bawang 1 batang, cincang halus\nTelur ayam 1 butir\nSosis ayam 1 buah, iris tipis\nMargarin atau minyak goreng 3 sdm.', updatedAt: DateTime.parse('2021-05-20 21:51:33'), createdAt: DateTime.parse('2021-05-20 21:51:33'), ), ]; List<Note> get notes { List<Note> tempListNote = _notes.where((note) => note.isPinned).toList(); tempListNote.addAll(_notes.where((note) => !note.isPinned).toList()); return tempListNote; } void toogleIsPinned(String id) { int index = _notes.indexWhere((note) => note.id == id); if (index >= 0) { _notes[index].isPinned = !_notes[index].isPinned; notifyListeners(); } } void addNote(Note note) { _notes.add(note); notifyListeners(); } Note getNote(String id) { return _notes.firstWhere((note) => note.id == id); } }beda = sama : aja bisa beda hasil ya coach hehehe
siap sudah bisa coach, terima kasih.
import ‘package:flutter/material.dart’;
import ‘package:flutter/cupertino.dart’;
import ‘package:praktik_state_management/models/note.dart’;
import ‘package:praktik_state_management/widgets/note_item.dart’;class NoteGrid extends StatefulWidget {
//Note({Key? key}) : super(key: key);final List<Note> listNote;
final Function(String id) toogleisPinnedFn;NoteGrid(this.listNote, this.toogleisPinnedFn);
@override
State<NoteGrid> createState() => _NoteState();
}class _NoteState extends State<NoteGrid> {
@override
Widget build(BuildContext context) {
List<Note> TempListNote =
widget.listNote.where((note) => note.isPinned).toList();
TempListNote.addAll(
widget.listNote.where((note) => !note.isPinned).toList());
return Padding(
padding: EdgeInsets.all(10),
child: GridView.builder(
// listview menampilan dan merender data yg ada di layar
itemCount: TempListNote.length,
itemBuilder: (context, index) => NoteItem(
id: TempListNote[index].id,
title: TempListNote[index].title,
note: TempListNote[index].note,
isPinned: TempListNote[index].isPinned,
toggleIsPinnedFn: widget.toogleisPinnedFn),
gridDelegate: SliverGridDelegateWithFixedCrossAxisCount(
crossAxisCount: 2,
crossAxisSpacing: 8,
mainAxisSpacing: 8,
),
),
);
}
}import ‘package:flutter/material.dart’;
import ‘package:flutter/cupertino.dart’;
import ‘package:praktik_state_management/models/note.dart’;
import ‘package:praktik_state_management/screens/add_note_screen.dart’;
import ‘package:praktik_state_management/widgets/note_grid.dart’;class HomeScreen extends StatefulWidget {
//HomeScreen({Key? key}) : super(key: key);@override
State<HomeScreen> createState() => _HomeScreenState();
}class _HomeScreenState extends State<HomeScreen> {
List<Note> _listNote = [
Note(
id: ‘N1’,
title: ‘Catatan Materi Flutter’,
note:
‘Flutter merupakan Software Development Kit (SDK) yang bisa membantu developer dalam membuat aplikasi mobile cross platform. Kelas ini akan mempelajari pengembangan aplikasi mobile yang dapat dijalankan baik di IOS maupun di Android’,
updatedAt: DateTime.parse(‘2021-05-19 20:33:33’),
createdAt: DateTime.parse(‘2021-05-19 20:33:33’),
),
Note(
id: ‘N2’,
title: ‘Target Pembelajaran Flutter’,
note:
‘Peserta dapat mengembangkan aplikasi mobile (IOS dan Android) menggunakan flutter,\nPeserta memahami konsep pengembangan aplikasi menggunakan flutter,\nPeserta dapat menjalankan aplikasi mobile di IOS dan Android ataupun Emulator,\nPeserta memahami bahasa pemrograman Dart,\nPeserta dapat mendevelop aplikasi mobile menggunakan flutter dan dart dari dasar secara berurutan.’,
updatedAt: DateTime.parse(‘2021-05-20 20:53:33’),
createdAt: DateTime.parse(‘2021-05-20 20:53:33’),
),
Note(
id: ‘N3’,
title: ‘Belajar Flutter di ITBOX’,
note: ‘Jangan lupa belajar flutter dengan video interactive di ITBOX.’,
updatedAt: DateTime.parse(‘2021-05-20 21:22:33’),
createdAt: DateTime.parse(‘2021-05-20 21:22:33’),
),
Note(
id: ‘N4’,
title: ‘Resep nasi goreng’,
note:
‘Nasi putih 1 piring\nBawang putih 2 siung, cincang halus\nKecap manis atau kecap asin sesuai selera\nSaus sambal sesuai selera\nSaus tiram sesuai selera\nGaram secukupnya\nKaldu bubuk rasa ayam atau sapi sesuai selera\nDaun bawang 1 batang, cincang halus\nTelur ayam 1 butir\nSosis ayam 1 buah, iris tipis\nMargarin atau minyak goreng 3 sdm.’,
updatedAt: DateTime.parse(‘2021-05-20 21:51:33’),
createdAt: DateTime.parse(‘2021-05-20 21:51:33’),
),
];void toggleIsPinned(String id) {
int index = _listNote.indexWhere((note) => note.id == id);
if (index >= 0) {
setState(() {
_listNote[index].isPinned = !_listNote[index].isPinned;
});
}
;
}void addNote(Note note) {
setState(() {
_listNote.add(note);
});
}@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text(‘NOTES’),
),
body: NoteGrid(_listNote, toggleIsPinned),
floatingActionButton: FloatingActionButton(
onPressed: () {
Navigator.of(context).push(
MaterialPageRoute(builder: (builder) => addNoteScreen(addNote)),
);
},
child: Icon(Icons.add),
));
// Column(
// children: [
// …_listNote.map((note) => Container(
// child: Text(note.note),
// padding: EdgeInsets.all(10),
// )) // ], // ),
}
}sudah solved kak.
next kalau ada kendala lagi yavoid main() {
runApp(acf());
}class acf extends StatefulWidget {
@override
State<acf> createState() => _acfState();
}class _acfState extends State<acf> {
//const acf({Key? key}) : super(key: key);
var soalIndex = 0;
var totalSkor = 0;var pertanyaan = [
{
‘pertanyaan’: ‘bedak apa yang berwarna putih?’,
‘jawaban’: [
{‘text’: ‘shared pink’, ‘skor’: 40},
{‘text’: ‘shared natural’, ‘skor’: 70},
{‘text’: ‘bedak bayi’, ‘skor’: 10},
{‘text’: ‘bedak bulus’, ‘skor’: 0},
],
},
{
‘pertanyaan’: ‘sr12 punya obat ketek?’,
‘jawaban’: [
{‘text’: ‘ada’, ‘skor’: 80},
{‘text’: ‘tidak’, ‘skor’: 10},
{‘text’: ‘mana saya tau, saya kan ikan’, ‘skor’: -80},
],
},
{
‘pertanyaan’: ‘siapa direktur sr12?’,
‘jawaban’: [
{‘text’: ‘aris’, ‘skor’: 100},
{‘text’: ‘cici’, ‘skor’: 100},
{‘text’: ‘khadijah’, ‘skor’: 100},
{‘text’: ‘hafshah’, ‘skor’: 100},
],
},
];void jawaban(int skor) {
//print(‘tombol sudah di tekan’);totalSkor = totalSkor + skor;
setState(() {
soalIndex += 1;
});
if (soalIndex < pertanyaan.length) {
print(‘masih ada soal berikutnya’);
} else {
print(‘soal sudah habis’);
}
print(soalIndex);
}@override
Widget build(BuildContext context) {
return MaterialApp(
home: Scaffold(
appBar: AppBar(
title: Text(‘KH STORE’),
),
body: soalIndex < pertanyaan.length
? Kuis(
jawaban: jawaban,
pertanyaan: pertanyaan,
soalIndex: soalIndex,
)
: Hasil(),
),
);
}
} -
AuthorPosts