Wie der Zugriff auf eine Klasse, Methode aus einer anderen Klasse dart?

Ich bin neu in der dart. Derzeit Arbeit an einer mobilen app durch flattern. Ich habe eine Helper Klasse, die einige gemeinsame Methoden, die ich geplant habe, die überall in der app. Habe ich aufgenommen, dass Helper Klasse in einer anderen Klasse. Aber, können Sie nicht in der Lage, Abb. Sie heraus, wie Sie den Zugriff auf Ihre Methoden.

Mein Allgemeines Helper class code:

import 'dart:async';
import 'dart:convert';
import 'package:shared_preferences/shared_preferences.dart';

class Helper {

  Map userDetails = {};
  Future<SharedPreferences> _prefs = SharedPreferences.getInstance();

  //--- Method for getting user details from shared preference ---
  Future<Map>getUserDetailsFromSharedPreference () async {
    try {
      final SharedPreferences prefs = await _prefs;

      if(prefs.getString('user') != null) {
        this.userDetails = json.decode(prefs.getString('user'));
      } else {
        print('Shared preference has no data');
      }

    } catch (e){
      print('Exception caught at getUserDetails method');
      print(e.toString());
    }

    return this.userDetails;
  }

}

Hier ist meine wichtigsten Programm-code, wo habe ich die Helper-Klasse & versucht zu zugreifen, es ist getUserDetailsFromSharedPreference (). In diesem Fall, ich erhalte eine Fehlermeldung wie Only static memebers can be accessed in initializers. Ich habe auch versucht zu extends Helper-Klasse in UserProfile Klasse. Aber auch dort bin ich immer eine andere Art von Fehler. Nicht in der Lage, zu erkennen, wie, dies zu tun.

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

class UserProfile extends StatefulWidget {
    @override
    UserProfileState createState() => new UserProfileState();
}

class UserProfileState extends State<UserProfile> {
    Helper helper = new Helper();
    var userData = helper.getUserDetailsFromSharedPreference();
}

@Günter Zöchbauer ich habe mir Helper.dart Datei wie diese, wie du vorgeschlagen hast -

import 'dart:async';
import 'dart:convert';
import 'package:shared_preferences/shared_preferences.dart';

class Helper {

  Map userDetails = {};
  Future<SharedPreferences> _prefs = SharedPreferences.getInstance();

  static Helper _instance;
  factory Helper() => _instance ??= new Helper._();

  Helper._();

  //--- Method for getting user details from shared preference ---
  Future<Map>getUserDetailsFromSharedPreference () async {
    try {
      final SharedPreferences prefs = await _prefs;

      if(prefs.getString('user') != null) {
        this.userDetails = json.decode(prefs.getString('user'));
      } else {
        print('Shared preference has no data');
      }

    } catch (e){
      print('Exception caught at getUserDetails method');
      print(e.toString());
    }

    return this.userDetails;
  }

}

Nun, in meinem tryint, dass der Zugang getUserDetailsFromSharedPreference() Methode bin ich immer den gleichen Fehler Only static memebers can be accessed in initializers .

Wie der Zugriff auf eine Klasse, Methode aus einer anderen Klasse dart?

InformationsquelleAutor Suresh | 2018-05-08
Schreibe einen Kommentar