Beranda › Forums › Belajar Flutter Mobile Apps Tingkat Menengah › provider part 2 addNote error
- This topic has 7 replies, 2 voices, and was last updated 4 years, 5 months ago by Anonymous.
-
AuthorPosts
-
May 23, 2022 at 8:43 PM #50251
run aplikasi jalan setelah menggunakan provider tetapi fungsi addNotenya tidak berjalan muncul error
Exception caught by gesture ═══════════════════════════════════════════
The following assertion was thrown while handling a gesture:
‘package:flutter/src/widgets/navigator.dart’: Failed assertion: line 4135 pos 12: ‘name != null’: is not true.
package:flutter/…/widgets/navigator.dart:4135
2Either the assertion indicates an error in the framework itself, or we should provide substantially more information in this error message to help you determine and fix the underlying cause.
In either case, please report this assertion by filing a bug on GitHub:
https://github.com/flutter/flutter/issues/new?template=2_bug.mdWhen the exception was thrown, this was the stack
#2 NavigatorState._routeNamed
package:flutter/…/widgets/navigator.dart:4135
#3 NavigatorState.pushNamed
package:flutter/…/widgets/navigator.dart:4212
#4 _HomeScreenState.build.<anonymous closure>
package:notes/screens/home_screen.dart:21
#5 _InkResponseState._handleTap
package:flutter/…/material/ink_well.dart:989
#6 GestureRecognizer.invokeCallback
package:flutter/…/gestures/recognizer.dart:182
…Handler: “onTap”
Recognizer: TapGestureRecognizer#1ba05
debugOwner: GestureDetector
state: possible
won arena
finalPosition: Offset(369.9, 648.3)
finalLocalPosition: Offset(30.5, 36.9)
button: 1
sent tap down
════════════════════════════════════════════════════════════════════════════════May 23, 2022 at 9:30 PM #50253AnonymousHi,
ini maksutnya errornya pas tekan tombol + di home screen trus error ya?
boleh tolong kirimin code kamu yang di file home_screen.dart dan juga di add_or_detail_screen.dart?May 23, 2022 at 9:42 PM #50254iya error pas tekan tombol +
home_screen.dart
import ‘package:flutter/material.dart’;
import ‘package:notes/screens/add_or_detail_screen.dart’;
import ‘package:notes/widgets/notes_grid.dart’;class HomeScreen extends StatefulWidget {
static const routeName = ‘/addOrDetailScreen’;
@override
State<HomeScreen> createState() => _HomeScreenState();
}class _HomeScreenState extends State<HomeScreen> {
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text(‘Notes’),
),
body: NotesGrid(),
floatingActionButton: FloatingActionButton(
onPressed: () {
Navigator.of(context).pushNamed(AddOrDetailScreen.routeName);
},
child: Icon(Icons.add),
),
);
}
}May 23, 2022 at 9:43 PM #50255add_or_detail_screen.dart
import ‘package:flutter/material.dart’;
import ‘package:notes/models/note.dart’;
import ‘package:notes/provider/notes.dart’;
import ‘package:provider/provider.dart’;class AddOrDetailScreen extends StatefulWidget {
static String routeName;@override
State<AddOrDetailScreen> createState() => _AddOrDetailScreenState();
}class _AddOrDetailScreenState extends State<AddOrDetailScreen> {
Note _note = Note(
id: null,
title: ”,
note: ”,
updatedAt: null,
createdAt: null,
);
bool init = true;
final _formKey = GlobalKey<FormState>();void submitNote() {
_formKey.currentState.save();
final now = DateTime.now();
_note = _note.copyWith(
updatedAt: now,
createdAt: now,
);
final notesProvider = Provider.of<Notes>(context, listen: false);
notesProvider.addnote(_note);
Navigator.of(context).pop();
// print(‘title : ‘ + _note.title);
// print(_note.note);
}@override
void didChangeDependencies() {
if (init) {
String id = ModalRoute.of(context).settings.arguments as String;
_note = Provider.of<Notes>(context).getNote(id);
init = false;
}super.didChangeDependencies();
}@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);
},
),
],
),
),
),
);
}
}May 24, 2022 at 11:42 AM #50261AnonymousHi,
ini masalahnya ada di file add_or_detail_screen.dart ya, ada bagian yang kamu miss.
pada variable static String routeName kamu harus kasi valuenya ya. karena variable tersebut yang akan menjadi patokan bagi flutternya untuk menentukan mau menampilkan halaman apa nih, karena kan di code nyaNavigator.of(context).pushNamed(AddOrDetailScreen.routeName);kita suruh push berdasarkan name dan kalau variable routeNamenya null navigatornya gk akan tau harus push yang mana.
jadi cara perbaikinnya kamu ubah variable routeName kamu menjadi ini:static const routeName = '/addOrDetailScreen';May 24, 2022 at 11:49 AM #50262Anonymousoh iya ternyata di home screen kamu
kamu tambahin static const routeName = ‘/addOrDetailScreen’ ya
itu seharusnya bukan di homescreen ya, tapi di file add_or_detail_screen sesuai penjelasan di postingan sebelumnya.nah nanti kalau di add_or_detail_screen sudah ada variable routeName dengan value ‘/addOrDetailScreen’ maka variable routeName di file/class lainnya harus diubah ya, dalam kasus ini variable routeName di homescreen kamu dihapus atau diganti ya valuenya, intinya gk boleh sama valuenya, kalau sama nanti flutternya binggung, kamu mau push layar bagian yang mana? karena ada 2 class dengan routeName yang sama
May 25, 2022 at 4:18 PM #50273terima kasih bantuannya dan penjelasannya coach
May 26, 2022 at 3:35 PM #50291AnonymousSama-sama 👍
-
AuthorPosts
- You must be logged in to reply to this topic.