Herkese merhaba FutureBuilder kullanırken sorun yaşıyorum. Nasıl anlatmam gerektiğini bilemedim maddeler halinde anlattım. Kolay okunabilmesi için kendi kodumu sadeleştirip atmak istedim. Şimdi den çok teşekkür ederim. Kullandığım paketler html ve http flutter pub add http html
.
A classının içinde iki tane ElevatedButton button var.
Buttonlara bastığım zaman B classı çalışıyor ve başka sayfaya geçiyor.
Buttonların onpresslerinde B().data(1);
B().data(2);
B clasının içindeki data methoduna 1 ve 2 gönderiyorum.
B classının içinde ki data methodu Future<dynamic> data(args) async {
bu şekilde alıyorum.
B classının içinde ki listeden de final response = await http.get(Uri.parse(url[args]));
bu şekilde çekiyorum.
List url = [
"https://www.flutterforum.org/",
"https://pub.dev/",
];
Sorunun çıktığı nokta FutureBuilder kısmı. data fonksiyonuna argüman gönderdiğim de future kısmında da argüman yazmam lazım. Başka bi yöntem varsa bilmiyorum.
FutureBuilder(
future: data(),
builder: (BuildContext context, AsyncSnapshot snapshot) {
return Text(
"${snapshot.data}"
);
import 'package:flutter/material.dart';
import "package:http/http.dart" as http;
import "package:html/parser.dart";
void main() => runApp(MyApp());
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return MaterialApp(
home: A(),
);
}
}
class A extends StatelessWidget {
@override
Widget build(BuildContext context) {
return Scaffold(
body: Center(
child: Column(
mainAxisAlignment: MainAxisAlignment.spaceEvenly,
children: [
ElevatedButton(
child: const Text("Button1"),
onPressed: () {
Navigator.push(
context,
MaterialPageRoute(builder: (BuildContext context) => B()),
/*
B().data(1);
*/
);
}
),
ElevatedButton(
child: const Text("Button2"),
onPressed: () {
Navigator.push(
context,
MaterialPageRoute(builder: (BuildContext context) => B()),
/*
B().data(2);
*/
);
}
),
]
)
)
);
}
}
class B extends StatelessWidget {
List url = [
"https://www.flutterforum.org/",
"https://pub.dev/",
];
Future<dynamic> data() async {
//Future<dynamic> data(args) async {
//final response = await http.get(Uri.parse(url[args]));
final response = await http.get(Uri.parse(url[1]));
var document = parse(response.body);
return document.getElementsByTagName("title")[0].text;
}
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(),
body: FutureBuilder(
future: data(),
//future: data(),KOD BURDA PATLIYOR :D
builder: (BuildContext context, AsyncSnapshot snapshot) {
return Text(
"${snapshot.data}"
);
}
),
);
}
}