最近在学习flutter 哎,感觉到处都是坑,不说了,说多了都是泪,直接进入主题。
在使用跳转页面的时候报错
根据这个错误找了半天,感觉自己都快绝望了。突然想起前段时间获取屏幕宽高一样,需要在MaterialApp里面进行调用。无赖自己抱着侥幸的心里打算试一试。哪里知道一试就成功了,在这里自己标记一下。希望给后面的兄弟有一些帮助。代码如下
import 'dart:async'; import 'package:flutter/material.dart'; import 'package:flutter_iot/util/SharePreferenceUtil.dart'; import 'dart:io'; import 'package:flutter_iot/net/ApiStores.dart'; import 'package:flutter_iot/net/RequestApi.dart'; import 'dart:convert'; import 'loging.dart'; void main() => runApp(new RunApp()); /** * 2019年4月11日15:03:12 * 加载页面 * ygang * **/ class RunApp extends StatefulWidget { @override State<StatefulWidget> createState() { // TODO: implement createState return new LoadDart(); } } var cont; class LoadDart extends State<RunApp> { @override void initState() { super.initState(); Timer timer = new Timer(new Duration(seconds: 1), () { Future<bool> b = getBool(IS_LOGIN); b.then((bool b) { if (b) { //已经登录 print(">>>>>>true"); getMyAccountMessage(); getgetPermission(); } else { //没有登录 print(">>>>>>false"); if (cont == null) { print(">>>>>>cont =false"); } Navigator.of(cont).pushAndRemoveUntil( new MaterialPageRoute(builder: (BuildContext context) { return new Loging(); }), (route) => route == null); } }); }); } @override Widget build(BuildContext context) { // TODO: implement build return new MaterialApp( title: "LoadActivity", home: new HomePage(), ); } } class HomePage extends StatelessWidget { @override Widget build(BuildContext context) { cont = context; final size = MediaQuery.of(context).size; // TODO: implement build return new Stack( children: <Widget>[ new Center( child: new Image.asset( "images/load_bg.png", fit: BoxFit.fill, height: size.height, width: size.width, ), ), new Positioned( left: 40, right: 40, top: size.height / 2 - 120, child: new Image.asset( "images/load_center.png", ), ), new Positioned( bottom: 20, left: 40, right: 40, child: new Image.asset( "images/load_botton.png", ), ), new Positioned( top: (size.height - 470) / 2, child: new Image.asset( "images/load_left.png", width: 198, height: 470, ), ), new Positioned( right: 0, child: new Image.asset( "images/load_right.png", width: 104, height: 554, ), ) ], ); } } /** * 获取个人账套的信息 */ void getMyAccountMessage() async { var httpClient = new HttpClient(); var uri = getUri() + getMyAccountMessagePath; String result; try { var request = await httpClient.getUrl(Uri.parse(uri)); var response = await request.close(); if (response.statusCode == HttpStatus.OK) { var json1 = await response.transform(utf8.decoder).join(); var data = json.decode(json1); result = data['origin']; } else { result = 'Error getting IP address:\nHttp status ${response.statusCode}'; } } catch (exception) { result = 'Failed getting IP address'; } } /** * 获取权限标识 */ void getgetPermission() async {}