首先,抱歉我的英语不好。在个人资料页面中点击时,我试图设置一个登录对话框。我使用了import 'package:flutter/material.dart';
void main() {
runApp(new MyApp());
}
class MyApp extends StatefulWidget {
@override
State<StatefulWidget> createState() {
return HomeScreen();
}
}
//List is here, had to make global so I could access in 2 widgets
List<TrailModel> trails = [];
class HomeScreen extends State<MyApp> {
Future<List<TrailModel>> fetchData() async {
final response = await get('url_here');
final trailModels = List<TrailModel>();
final trailModel = TrailModel.fromJson(json.decode(response.body));
trailModels.add(trailModel);
return trailModels;
}
@override
Widget build(BuildContext ctxt) {
return MaterialApp(
home: Scaffold(
appBar: AppBar(
title: Text("HikeLocator"),
),
body:
new RaisedButton(
child: Text("click me"),
onPressed: () async {
final trails = await fetchData();
Navigator.push(
ctxt,
new MaterialPageRoute(builder: (ctxt) => new ListScreen(trails)),
);
}
),
),
);
}
}
//Display ListView in here
class ListScreen extends StatelessWidget {
final List<TrailModel> trails;
ListScreen(this.trails);
@override
Widget build(BuildContext ctxt) {
return new Scaffold(
appBar: new AppBar(
title: new Text("This is where the list lies"),
),
body:TrailList(trails),
);
}
}
//create ListView here which I want displayed on 2nd page
class TrailList extends StatelessWidget {
final List<TrailModel> trails;
TrailList(this.trails);
Widget build(context) {
return ListView.builder(
itemCount: trails.length,
itemBuilder: (context, int index) {
String myText = trails[index].trails.toString();
var splitString = myText.split("\, type");
var splitString2 = splitString[0];
var splitString3 = splitString2.split("name: ");
String name = splitString3[1];
splitString = myText.split("\, name");
splitString2 = splitString[0];
splitString3 = splitString2.split("id: ");
String id = splitString3[1];
splitString = myText.split("\, conditionStatus");
splitString2 = splitString[0];
splitString3 = splitString2.split("latitude: ");
String latitude = splitString3[1];
splitString = myText.split("\, latitude");
splitString2 = splitString[0];
splitString3 = splitString2.split("longitude: ");
String longitude = splitString3[1];
splitString = myText.split("\, url");
splitString2 = splitString[0];
splitString3 = splitString2.split(" location: ");
String location = splitString3[1];
return Text(
"name: $name,\n location: $location, \nlatitude: $latitude, \nlongitude: $longitude\n");
},
);
}
}
class TrailModel {
Object trails;
TrailModel(this.trails);
TrailModel.fromJson(Map<String, dynamic> parsedJson) {
trails = parsedJson['trails'];
}
}
作为标签栏。
如果我在react-navigation
中执行函数。它只执行一次。我回到主页,然后再次点击个人资料页面。它不会再次执行。
componentDidMount(){ this._bootstrapAsync(); }
我每次在视图中使用Tab键可以执行该功能的解决方案是什么?非常感谢。
答案 0 :(得分:1)