Home > Software design >  A value of type 'Future<String>' can't be assigned to a variable of type '
A value of type 'Future<String>' can't be assigned to a variable of type '

Time:09-22

i'm try to learn how to get token. what is wrong with the code i wrote? thanks

enter image description here

what is wrong with the code i wrote? thanks

enter image description here

enter image description here

i'm try to learn how to get token.

import 'package:shared_preferences/shared_preferences.dart';

import '../common/constant.dart';

enter image description here

enter image description here

CodePudding user response:

Use this sample:

    class UtilSharedPreferences {
  static Future<String> getToken() async {
    var prefs = await SharedPreferences.getInstance();
    return prefs.getString('Token') ?? '';
  }

  static Future<bool> setToken(String value) async {
    var prefs = await SharedPreferences.getInstance();
    return prefs.setString('Token', value);
  }
}

class MyHomePage extends StatefulWidget {
  MyHomePage({
    Key? key,
  }) : super(key: key);

  @override
  _MyHomePageState createState() => new _MyHomePageState();
}

class _MyHomePageState extends State<MyHomePage> {
  String str = '';

  gettoken() async {
    str = await UtilSharedPreferences.getToken();
    setState(() {});
  }

  @override
  void initState() {
    // TODO: implement initState
    super.initState();
    gettoken();
  }

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      body: Column(
        mainAxisAlignment: MainAxisAlignment.center,
        crossAxisAlignment: CrossAxisAlignment.center,
        children: [
          Text('Token :$str'),
          Center(
            child: InkWell(
              onTap: () {
                var result = UtilSharedPreferences.setToken('hi');
                if(result){
                  print('success');
                }
              },
              child: Text('save token'),
            ),
          ),
        ],
      ),
    );
  }
}

CodePudding user response:

Future is asynchronous and you must use await to get the desired value.

user = await UtilSharedPreferencs();

The async keyword is required to use async. So implement it separately as a method

void setUser() async {
   user = await UtilSharedPreferencs();
}
void initState(){
  super.initState();
  setUser();
}
  • Related