как создать две среды во флаттере - PullRequest
0 голосов
/ 10 марта 2020

Я пытаюсь создать две среды разработки для своего приложения, в которых URL-адрес сервера меняется в основном в каждой среде, но во время его выполнения я выбрасываю эту ошибку и не могу ее решить .

основной основной является

void main() async{
  WidgetsFlutterBinding.ensureInitialized();
   final prefs = new PreferenciasUsuario();
    await prefs.initPrefs();


 runApp(MyApp());
}

class MyApp extends StatefulWidget {
  @override
  _MyAppState createState() => _MyAppState();
}

class _MyAppState extends State<MyApp> {
  final GlobalKey<NavigatorState> navigatorKey = new GlobalKey<NavigatorState>(); 
  @override
  void initState() {
    //Config of push notification provider
    super.initState();
    // ulr base with globals variables
    globals.url=AppConfig.of(context).url;
    final pushProvider = PushNotificationProvider();
    //temporal order to check if user has a current order 
    final  temporalOrderProvider = TemporalOrderProvider();

    //check the user name 
    final  userName = UserProvider();
    //checking the user data save in device
    final prefs = new PreferenciasUsuario();
    userName.getName(prefs.token);
    temporalOrderProvider.getBarberAsigned();
    //initialize the push notification provider
    pushProvider.initNotifications();
    pushProvider.messages.listen((data){
      print(data);
      if (data == 'cancel'){
        navigatorKey.currentState.pushNamed('services');
      }if (data == 'taken'){
        navigatorKey.currentState.pushNamed('orderProccess');
      }
    });
  }

  @override
  Widget build(BuildContext context) {

    return MultiProvider(

      providers: [
        ChangeNotifierProvider( builder: (context) => UserInfo() ),
        ChangeNotifierProvider( builder: (context) => ServicesProvider() ),
        ChangeNotifierProvider( builder: (context) => BarberAsigned() ),
        ChangeNotifierProvider( builder: (context) => Counter() ),
         ChangeNotifierProvider( builder: (context) => Orderinfo() ),
      ],
      child: MaterialApp(     
        debugShowCheckedModeBanner: false,
        initialRoute: _rute(),
        navigatorKey: navigatorKey,
        routes: {

          'login':(context)=> LoginPage(),
          'code':(context)=> Code(),
          'registerData':(context)=> RegisterData(),
          'services':(context)=> Services(),
          'checkin':(context)=> Checkin(),
          'orderProccess':(context)=> OrderProcces(),
          'publicity' : (context)=> Publicity() 
          // 'userInfo' : (context)=> User()

        },

      )
    );
  }

код основного производства

 import 'package:flutter/material.dart';
import 'resources/app_config.dart';
import 'main.dart';

void main() {
  var configuredApp = AppConfig(
    appTitle: "Flutter Production Mode",
    url: 'urlBaseofServer',
    child: MyApp(),
  );
  return runApp(configuredApp);
}

и конфигурации

import 'package:flutter/material.dart';
import 'package:meta/meta.dart';

class AppConfig extends InheritedWidget{
  final String appTitle;
  final String url;
  final Widget child;

  AppConfig({
    @required this.child,
    @required this.appTitle,
    @required this.url});

  static AppConfig of(BuildContext context) {
    return context.dependOnInheritedWidgetOfExactType<AppConfig>();
  }

  @override
  bool updateShouldNotify(InheritedWidget oldWidget) => false;
}

ошибка следующая :

...