Hello,
I need use the UUID from table Auth in my custom code, i no have idea how does this work, I've tried several ways already!!
Hello,
I need use the UUID from table Auth in my custom code, i no have idea how does this work, I've tried several ways already!!
Follow my code: // Automatic FlutterFlow imports
import '/backend/schema/structs/index.dart';
import '/backend/supabase/supabase.dart';
import '/flutter_flow/flutter_flow_theme.dart';
import '/flutter_flow/flutter_flow_util.dart';
import '/custom_code/widgets/index.dart'; // Imports other custom widgets
import '/flutter_flow/custom_functions.dart'; // Imports custom functions
import 'package:flutter/material.dart';
// Begin custom widget code
// DO NOT REMOVE OR MODIFY THE CODE ABOVE!
import 'package:http/http.dart' as http;
import 'dart:convert';
import 'package:syncfusion_flutter_charts/charts.dart';
import 'package:intl/intl.dart';
import 'package:flutter/widgets.dart' as widget;
Future<void> fetchDataFromAPI() async {
// Defina a URL base sem parâmetros
const String url = 'https://rjgkiosbxidexelzgsis.supabase.co/rest/v1/rpc/pedidos_afiliado';
// Defina a chave API
const String apiKey =
'eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJzdXBhYmFzZSIsInJlZiI6InJqZ2tpb3NieGlkZXhlbHpnc2lzIiwicm9sZSI6I';
// Defina o token de autorização
const String token =
'rPRT6e3sZ32/wWbdAmGG52GfJlJ+QVeAx5eH3/HfheQibuU1HsQU7PIE9ung==';
// Dados a serem enviados no corpo da solicitação
final Map<String, dynamic> requestBody = {
'p_id_usuario': widget.idUser, // Insere o idUser na solicitação
};
try {
// Envia uma solicitação POST à URL, passando os cabeçalhos e o corpo da requisição
var response = await http.post(
Uri.parse(url),
headers: {
'Content-Type': 'application/json',
'apikey': apiKey,
'Authorization': token,
},
body: jsonEncode(requestBody), // Codifica o corpo da solicitação como JSON
);
// Verifica o status da resposta
if (response.statusCode == 200) {
// Decodifica a resposta JSON
var data = jsonDecode(response.body);
// Atualiza o estado com os dados recebidos
setState(() {
chartData = List.from(data.map((item) => ChartDataStruct.fromJson(item)));
});
} else {
// Lança uma exceção se a solicitação falhar
throw Exception('Falha ao carregar dados');
}
} catch (e) {
// Lida com qualquer exceção lançada durante a solicitação
print(e.toString());
}
}
double calculateTotalCommissions() {
double totalCommissions = 0;
for (var data in chartData) {
totalCommissions += data.comissaoVendedor;
}
return totalCommissions;
}
@override
Widget build(BuildContext context) {
return Container(
width: widget.width ?? double.infinity,
height: widget.height ?? 300,
child: SfCartesianChart(
title: ChartTitle(text: widget.chartTitle ?? 'Ganhos'),
margin: EdgeInsets.only(left: 10, right: 10), // Adicionando margens
primaryXAxis: CategoryAxis(
isVisible: true,
minimum: 0, // Inicia em 0
maximum: chartData.isNotEmpty ? chartData.length - 1 : 0,
interval: 1, // Intervalo entre cada ponto no eixo X
edgeLabelPlacement:
EdgeLabelPlacement.none, // Deslocamento de etiquetas
labelPlacement: LabelPlacement
.onTicks, // Garante que os rótulos fiquem nos pontos de dados
majorGridLines: MajorGridLines(
color:
Colors.grey.withOpacity(0.2), // Ajusta a opacidade das grades
),
),
primaryYAxis: NumericAxis(
minimum: 0,
maximum: calculateTotalCommissions(),
interval: 100,
edgeLabelPlacement:
EdgeLabelPlacement.shift, // Deslocamento de etiquetas
majorGridLines: MajorGridLines(
color:
Colors.grey.withOpacity(0.2), // Ajusta a opacidade das grades
),
),
series: <CartesianSeries<ChartDataStruct, String>>[
SplineAreaSeries<ChartDataStruct, String>(
dataSource: chartData,
borderColor: Color(0xFFFF4C00), // Cor da borda da linha
borderWidth: 2, // Largura da borda da linha
color: Color(0xFFFF4C00)
.withOpacity(0.6), // Cor de preenchimento com opacidade
xValueMapper: (ChartDataStruct data, _) => data.dataEntrega,
yValueMapper: (ChartDataStruct data, _) => data.comissaoVendedor,
name: 'Comissões',
markerSettings:
MarkerSettings(isVisible: true), // Mostrar marcadores
splineType:
SplineType.cardinal, // Mantém o estilo spline para a área
),
],
tooltipBehavior: TooltipBehavior(enable: true),
),
);
}
}
class ChartDataStruct {
final String dataEntrega;
final double comissaoVendedor;
ChartDataStruct({required this.dataEntrega, required this.comissaoVendedor});
factory ChartDataStruct.fromJson(Map<String, dynamic> json) {
String formattedDate =
DateFormat('dd/MM').format(DateTime.parse(json['data_entrega']));
return ChartDataStruct(
dataEntrega: formattedDate,
comissaoVendedor: json['comissao_vendedor'].toDouble(),
);
}
}
// Set your widget name, define your parameter, and then add the
// boilerplate code using the green button on the right!