Olá. estou tendo esse erro:
poderiam me audar. segue abaixo os códigos.
import 'package:banco/screens/account_screen.dart';
void main(){
AccountScreen accountScreen = AccountScreen();
accountScreen.inicializeStream();
accountScreen.runChatbot();
}
import 'dart:async';
import 'package:banco/apikey.dart';
import 'package:banco/models/account.dart';
import 'package:http/http.dart';
import 'dart:convert';
class AccountService{
final StreamController<String> _streamController = StreamController<String>();
Stream<String> get streamInfos => _streamController.stream;
String url = "https://api.github.com/gists/35f64ffee91c7789fd08184d21deab0a";
Future<List<Account>> getAll() async{
Response response = await get(Uri.parse(url));
_streamController.add("${DateTime.now()} | requisicao de leitura");
Map<String,dynamic> mapResponse = json.decode(response.body);
List<dynamic> listDynamic = json.decode(mapResponse["files"]["accounts.json"]["content"]);
List<Account> listAccounts = [];
for (dynamic dyn in listDynamic){
Map<String,dynamic> mapAccount = dyn as Map<String,dynamic>;
Account account = Account.fromMap(mapAccount);
listAccounts.add(account);
}
return listAccounts;
}
addAccount(Account account) async{
List <Account> listAccounts = await getAll();
listAccounts.add(account);
List<Map<String,dynamic>> listContent=[];
for (Account account in listAccounts){
listContent.add(account.toMap());
}
String content = jsonEncode(listContent);
Response response = await post(Uri.parse(url),headers: {
"Authorization" : "Bearer $apiKey"
}, body: json.encode({
"description" : "accounts.json",
"public":true,
"files":{
"accounts.json":{
"content":content,
}
}
}));
if (response.statusCode.toString()[0]== '2'){
_streamController.add("${DateTime.now()} | requisicao de adição bem sucedida(${account.name}).");
}else{
_streamController.add("${DateTime.now()} | requisicao de adição falhou(${account.name}).");
}
}
}
import 'dart:io';
import 'package:banco/models/account.dart';
import 'package:banco/services/accountservice.dart';
class AccountScreen {
final AccountService _accountService = AccountService();
void inicializeStream(){
_accountService.streamInfos.listen((event) {
print(event);
},);
}
void runChatbot() async{
print("Seja bem vindo ao Banco. Sou Roger.\n");
bool isRunning = true;
while(isRunning){
print("Como posso te ajudar");
print("Digite 1 para ver todas as contas");
print("Digite 2 para adicionar uma conta");
print("Digite 3 para sair.\n");
String? input = stdin.readLineSync();
if (input != null){
switch(input){
case '1':
{
await _getAllAccounts();
break;
}
case '2':{
await _addExampleAccount();
break;
}
case '3':
{
isRunning = false;
print("Te vejo na Proxima");
break;
}
default:
{
print("Não entendi. Digite novamente");
}
}
}
}
}
_getAllAccounts()async{
List<Account> listAccounts = await _accountService.getAll();
print(listAccounts);
}
_addExampleAccount()async{
Account example = Account(id: "ID555", name: "Jose", lastName: "Buzo", balance: 0);
await _accountService.addAccount(example);
}
}
class Account {
String id;
String name;
String lastName;
double balance;
Account({required this.id,
required this.name,
required this.lastName,
required this.balance});
factory Account.fromMap(Map<String,dynamic>map){
return Account(id: map["id"], name: map["name"], lastName: map["lastName"], balance: map["balance"],);
}
Map<String,dynamic> toMap(){
return<String,dynamic>{
"id" : id,
"name" : name,
"lastName" : lastName,
"balance" : balance,
};
}
}