BandoLero Şimdi anladım sizi. 1. sayfada bastığınız butona göre 2. sayfada url’e göre sayfa şekillensin istiyorsunuz. Bunu yapmak için constructor kullanarak 2. sayfayı oluşturmanız gerek. Bunu 2 şekilde yapabilirsiniz. 1. constructor ile id gönderirsiniz ve listeden o id’li url ile işlem yapılır. 2. ise sayfaya direk url gönderirsiniz. Bu şekilde hem listeye bağlı kalmaz hemde istediğiniz yerde farklı url’ler ile de sayfayı çağırabilirsiniz.
id ile örnek
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(0)),
/*
B().data(1);
*/
);
}),
ElevatedButton(
child: const Text("Button2"),
onPressed: () {
Navigator.push(
context,
MaterialPageRoute(builder: (BuildContext context) => B(1)),
/*
B().data(2);
*/
);
}),
])));
}
}
class B extends StatelessWidget {
final List url = [
"https://www.flutterforum.org/",
"https://pub.dev/",
];
final int urlId;
B(this.urlId, {super.key});
Future<dynamic> data(id) async {
//Future<dynamic> data(args) async {
//final response = await http.get(Uri.parse(url[args]));
final response = await http.get(Uri.parse(url[id]));
var document = parse(response.body);
return document.getElementsByTagName("title")[0].text;
}
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(),
body: FutureBuilder(
future: data(urlId),
//future: data(),KOD BURDA PATLIYOR :D
builder: (BuildContext context, AsyncSnapshot snapshot) {
return Text("${snapshot.data}");
}),
);
}
}
url’li örnek
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("https://www.flutterforum.org/")),
/*
B().data(1);
*/
);
}),
ElevatedButton(
child: const Text("Button2"),
onPressed: () {
Navigator.push(
context,
MaterialPageRoute(
builder: (BuildContext context) => B("https://pub.dev/")),
/*
B().data(2);
*/
);
}),
])));
}
}
class B extends StatelessWidget {
const B(this.url, {super.key});
final String url;
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));
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}");
}),
);
}
}