Merhaba arkadaşlar. Ben nöbetçi eczane uygulaması yapıyorum. TextField’ a kadar yazdım. Yani ilçeyi girip arayınca oluyor. Ama birden fazla ezcane olabileceği için itemcount: _dutyPharmacies.result.length eklenmesi gerekiyor. Ama böyle yapınca da böyle bir hata veriyor.
════════ Exception caught by widgets library ═══════════════════════════════════════════════════════
The getter 'result' was called on null.
Receiver: null
Tried calling: result
The relevant error-causing widget was:
HomePage file:///C:/Users/hsyna/Desktop/apirequestcalisma/lib/main.dart:9:11
════════════════════════════════════════════════════════════════════════════════════════════════════
Bu hatayı _dutyParmacies.result a başlangıç değeri atarsam çözebileceğimi biliyorum ama nereye nasıl ekleyeceğimi bilmiyorum. Nasıl olmalı sizce. Kod aşağıda.
import 'package:apirequest/service.dart';
import 'package:apirequest/service.dart';
import 'package:apirequest/model.dart';
import 'package:flutter/cupertino.dart';
import 'package:flutter/foundation.dart';
import 'package:flutter/material.dart';
void main() {
runApp(MaterialApp(
home: HomePage(),
));
}
class HomePage extends StatefulWidget {
@override
_HomePageState createState() => _HomePageState();
}
class _HomePageState extends State<HomePage> {
DutyPharmacy _dutyPharmacies;
TextEditingController districtController=null;
bool _loadingstatus=false;
@override
void initState() {
super.initState();
districtController = new TextEditingController();
}
void onButtonPress(){
_loadingstatus = true;
Services.fetchData(districtController.text).then((dutyPharmacies) {
_dutyPharmacies = dutyPharmacies;
_loadingstatus = false;
setState(() {});
});
FocusScope.of(context).unfocus();
}
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text(_loadingstatus ? "Loading..." : "Duty Pharmacies"),
centerTitle: true,
),
body: Container(
color: Colors.black,
child: ListView.builder(
itemCount: _dutyPharmacies.result.length,
itemBuilder: (context, item) {
return Container(
margin: EdgeInsets.all(15.0),
color: Colors.grey,
child: Column(
children: [
Image.asset(
"images/pharmacy.jpg",
fit: BoxFit.fitHeight,
),
TextField(
controller:districtController,
decoration: InputDecoration(
border: InputBorder.none,
hintText: 'Enter a search term'
),
),
RaisedButton(
onPressed: this.onButtonPress,
child: const Text('Search', style: TextStyle(fontSize: 20)),
),
Text(
"Eczane Adı => ${_dutyPharmacies!=null?_dutyPharmacies.result[item]["name"]:""}",
style: TextStyle(
fontSize: 30.0,
fontWeight: FontWeight.bold,
color: Colors.black,
),
textAlign: TextAlign.center,
),
Text(
"Eczane İlçesi => ${_dutyPharmacies!=null?_dutyPharmacies.result[item]["dist"]:""}",
style: TextStyle(
fontSize: 20.0,
fontWeight: FontWeight.bold,
color: Colors.black,
),
textAlign: TextAlign.center,
),
Text(
"Eczane Adresi => ${_dutyPharmacies!=null?_dutyPharmacies.result[item]["address"]:""}",
style: TextStyle(
fontSize: 20.0,
fontWeight: FontWeight.bold,
color: Colors.black,
),
textAlign: TextAlign.center,
),
Text(
"Eczane Tel No => ${_dutyPharmacies!=null?_dutyPharmacies.result[item]["phone"]:""}",
style: TextStyle(
fontSize: 20.0,
fontWeight: FontWeight.bold,
color: Colors.black,
),
textAlign: TextAlign.center,
),
],
),
);
}),
),
);
}
}