我想我在这里遗漏了一些很明显的东西,或者我不理解Dart的逻辑,但是我如何从另一个文件引用一个未来值。
例如:
在下面的类中,我将在一个名为home.dart的文件中获得以下信息;
import 'dart:async';
import 'dart:convert';
import 'package:flutter/material.dart';
import 'package:http/http.dart' as http;
class Ken extends StatefulWidget {
const Ken({Key? key}) : super(key: key);
@override
KenState createState() => KenState();
}
class KenState extends State<Ken> {
Future<dynamic> fetchDd() async {
var daeUrl = "localhost";
var daeresponse = await http.get(Uri.parse(daeUrl));
var daedata = await jsonDecode(daeresponse.body);
var daew = await daedata['de'];
// print(daew);
return daew;
}在我的第二个文件页面中。1. file ;
我想我可以打电话给home.dart文件,像这样直接访问未来。
import 'home.dart';
Future<dynamic> timeHere() async {
KenState kenstate = KenState();
var h = await kenstate.fetchDd();
// print(h);
return h;
}
void main() async {
var c = await timeHere();
print(c);
}相反,我得到以下错误;
../../../../FlutterDev/flutter/packages/flutter/lib/src/material/animated_icons.dart:9:8: Error: Not found: 'dart:ui'
import 'dart:ui' as ui show Paint, Path, Canvas;
^
../../../../FlutterDev/flutter/packages/flutter/lib/src/material/animated_icons.dart:10:8: Error: Not found: 'dart:ui'
import 'dart:ui' show lerpDouble;
^
../../../../FlutterDev/flutter/packages/flutter/lib/src/material/app.dart:5:8: Error: Not found: 'dart:ui'
import 'dart:ui' as ui;
^
../../../../FlutterDev/flutter/packages/flutter/lib/src/material/app_bar_theme.dart:5:8: Error: Not found: 'dart:ui'
import 'dart:ui' show lerpDouble;
^
../../../../FlutterDev/flutter/packages/flutter/lib/src/material/arc.dart:6:8: Error: Not found: 'dart:ui'
import 'dart:ui' show lerpDouble;
^
../../../../FlutterDev/flutter/packages/flutter/lib/src/material/banner_theme.dart:5:8: Error: Not found: 'dart:ui'
import 'dart:ui' show lerpDouble;
^
../../../../FlutterDev/flutter/packages/flutter/lib/src/material/bottom_app_bar_theme.dart:5:8: Error: Not found: 'dart:ui'
import 'dart:ui' show lerpDouble;
^
../../../../FlutterDev/flutter/packages/flutter/lib/src/material/bottom_navigation_bar_theme.dart:5:8: Error: Not found: 'dart:ui'
import 'dart:ui' show lerpDouble;
^
../../../../FlutterDev/flutter/packages/flutter/lib/src/material/bottom_sheet.dart:5:8: Error: Not found: 'dart:ui'
import 'dart:ui' show lerpDouble;
^
../../../../FlutterDev/flutter/packages/flutter/lib/src/material/bottom_sheet_theme.dart:5:8: Error: Not found: 'dart:ui'
import 'dart:ui' show lerpDouble;我希望就如何解决这一问题提供任何指导。
先谢了。
发布于 2022-07-27 06:14:40
状态对象是由框架在膨胀一个StatefulWidget.createState方法以将其插入到树中时调用StatefulWidget方法来创建的。
只有在Dart项目本身,这种使用才是不正确的。
在颤振项目中使用:
void main() {
runApp(const MyApp());
}
class MyApp extends StatelessWidget {
const MyApp({Key? key}) : super(key: key);
@override
Widget build(BuildContext context) {
return MaterialApp(
home: const PageOne(),
routes: {
'page_two': (context) => const PageTwo(),
},
);
}
}PageOne():
class PageOne extends StatefulWidget {
const PageOne({Key? key}) : super(key: key);
@override
State<PageOne> createState() => PageOneState();
}
class PageOneState extends State<PageOne> {
String value1 = 'empty';
Future<String> fetchDd() async {
await Future.delayed(const Duration(seconds: 1));
value1 = 'Future String';
return 'fromPageOne';
}
Future getValue() async {
await fetchDd();
setState(() {});
}
@override
Widget build(BuildContext context) {
return Scaffold(
body: SizedBox(
width: double.infinity,
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
children: [
Text(value1),
TextButton(
onPressed: () {
getValue();
},
child: const Text('Get value')),
TextButton(
onPressed: () {
Navigator.of(context).pushNamed('page_two');
},
child: const Text('Page Two')),
],
),
),
);
}
}PageTwo():
class PageTwo extends StatefulWidget {
const PageTwo({Key? key}) : super(key: key);
@override
State<PageTwo> createState() => _PageTwoState();
}
class _PageTwoState extends State<PageTwo> {
String value2 = 'empty';
Future timeHere() async {
PageOneState pageOneState = PageOneState();
value2 = await pageOneState.fetchDd();
setState(() {});
}
@override
Widget build(BuildContext context) {
return Scaffold(
body: SizedBox(
width: double.infinity,
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
children: [
Text(value2),
TextButton(
onPressed: () {
timeHere();
},
child: const Text('Get value')),
TextButton(
onPressed: () {
Navigator.of(context).pop();
},
child: const Text('Page Two'))
],
),
),
);
}
}https://stackoverflow.com/questions/73132615
复制相似问题