首页 > 解决方案 > 从 ErrorWidget 导航到其他 Widget

问题描述

我为我的应用程序设置了一个自定义 ErrorWidget:

@override
Widget build(BuildContext context) {
    ErrorWidget.builder = getErrorWidget;
    return TabsView();
} 

无论如何,我RaisedButton在 My ErrorWidget 中添加了一个让用户在按下重试时导航到其他小部件:

在此处输入图像描述

我尝试使用 Navigator,但我认为 ErrorWidget 不像 MaterialApp 所以我得到一个错误上下文 Undefined :

import 'package:flutter/material.dart';
import 'package:awesome_loader/awesome_loader.dart';
import 'package:carousel_slider/carousel_slider.dart';
import 'MyLocationView.dart';
List _tips = [
  ('Searching...'),
  ('Tips :Turn On Wifi'),
  ('Tips :Turn On GPS'),
];
int i = 0;


Widget getErrorWidget(FlutterErrorDetails error) {
  return Center(
      child: Column(
        mainAxisAlignment: MainAxisAlignment.center,
        children: <Widget>[
          AwesomeLoader(
            loaderType: AwesomeLoader.AwesomeLoader3,
            color: Colors.teal,
          ),
          Center(
            child: CarouselSlider(
              height: 60.0,
              viewportFraction: 1.0,
              enlargeCenterPage: true,
              autoPlay: true,
              autoPlayInterval: Duration( seconds: 3 ),
              autoPlayAnimationDuration: Duration( milliseconds: 800 ),
              items: _tips.map( (i) {
                return Builder(
                  builder: (BuildContext context) {
                    return Container(
                        width: 140.0,
                        child: Text(
                          ' $i ',
                          style: TextStyle( fontSize: 16.0 ),
                        ) );
                  },
                );
              } ).toList( ),
            ),
          ),
          Center(
            child :RaisedButton(
                child: Text("Retry"),
                onPressed: (){
                  //Here my button
                  Navigator.push(context, MaterialPageRoute(builder: (context)=>MyLocationView()));
                }),

          ),
        ],
      ),
  );
}

标签: flutterdartnavigation

解决方案


ErrorWidget 专用于严重错误,而不是用于其他用途。


推荐阅读