Beranda › Forums › Belajar Flutter Mobile Apps Tingkat Menengah › video global state ketika di simpan grid note nya tidak bertambah coach
- This topic has 2 replies, 2 voices, and was last updated 4 years, 6 months ago by Anonymous.
-
AuthorPosts
-
April 27, 2022 at 11:56 AM #49705
ini kodingan add_note_screen.dart nya
import ‘package:flutter/material.dart’;
import ‘package:note_itbox/models/note.dart’;class AddNoteScreen extends StatefulWidget {
final Function(Note note) addNoteFn;
AddNoteScreen(this.addNoteFn);
@override
_AddNoteScreenState createState() => _AddNoteScreenState();
}class _AddNoteScreenState extends State<AddNoteScreen> {
Note _note =
Note(id: null, title: “”, note: “”, updatedAt: null, createdAt: null);
final _formKey = GlobalKey<FormState>();
void submitNote() {
_formKey.currentState.save();
final now = DateTime.now();
_note = _note.copyWith(updatedAt: now, createdAt: now);
widget..addNoteFn(_note);
Navigator.of(context).pop;
print(“title: ” + _note.title);
print(_note.note);
}@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
actions: [TextButton(onPressed: submitNote, child: Text(“Simpan”))],
),
body: Container(
padding: EdgeInsets.all(12),
child: Form(
key: _formKey,
child: Column(
children: [
TextFormField(
decoration: InputDecoration(
hintText: “Judul”, border: InputBorder.none),
onSaved: (value) {
_note = _note.copyWith(title: value);
},
),
TextFormField(
decoration: InputDecoration(
hintText: “Tulis Catatan Disini”, border: InputBorder.none),
onSaved: (value) {
_note = _note.copyWith(note: value);
},
),
],
),
),
),
);
}
}April 27, 2022 at 11:57 AM #49706dan ini kodingan home_screen.dart nya
import ‘package:flutter/material.dart’;
import ‘package:note_itbox/screens/add_note_screen.dart’;
import ‘../models/note.dart’;
import ‘package:note_itbox/widgets/notes_grid.dart’;class HomeScreen extends StatefulWidget {
@override
_HomeScreenState 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) {
_listNote.add(note);
}@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text(“Notes”),
),
body: NotesGrid(_listNote, toggleIsPinned),
floatingActionButton: FloatingActionButton(
onPressed: () {
Navigator.of(context).push(
MaterialPageRoute(
builder: (builder) => AddNoteScreen(addNote),
),
);
},
child: Icon(Icons.add),
),
);
}
}apakah ada yg salah coach terimakasih
April 27, 2022 at 1:46 PM #49708AnonymousHi Sandi,
Pada function addNote kamu
kamu lupa membungkus nya dengan setState makanya tampilannya tidak keupdate,Jadi setiap x kita mau mengupdate tampilan pada widget kita distatefull kita harus membungkusnya dengan setState karena jika tidak, walaupun sebenarnya isi/value dari variable tersebut sudah berubah, tapi tampilan kita tidak akan berubah karena statenya belum diset ulang.
jika bingung cara ngelakuin setState pada function addNote, bisa lihat divideo global state pada menit 18:18.
-
AuthorPosts
- You must be logged in to reply to this topic.