问题描述
我有这个错误; 会不会是token有问题,上面写着Uri无效的token,但是我之前登录过,为什么读不出来?标题我像这样添加令牌..但它不起作用如何解决它?我可能做错了什么?
所以地图,如果哪里,哪里或其他东西不起作用.. 我是这个平台的新手,我可能问了一些非常简单的问题,抱歉。 谢谢大家....
import 'dart:async';
import 'package:bloc/bloc.dart';
import 'package:equatable/equatable.dart';
import 'package:Flutter/material.dart';
import 'package:Flutter_kNowin_app/core/data/response.dart';
import 'package:Flutter_kNowin_app/core/util/constants.dart';
import 'package:Flutter_kNowin_app/features/promotions/domain/entities/check.dart';
import 'package:Flutter_kNowin_app/features/promotions/domain/entities/spin.dart';
import 'package:Flutter_kNowin_app/features/promotions/domain/repositories/spin_repository.dart';
import 'package:Flutter_kNowin_app/features/promotions/domain/usecases/check_regular.dart';
import 'package:Flutter_kNowin_app/features/promotions/domain/usecases/check_vip.dart';
import 'package:Flutter_kNowin_app/injection_container.dart';
part 'spin_event.dart';
part 'spin_state.dart';
enum SpinPageState {
regular,vip,}
class SpinBloc extends Bloc<SpinEvent,SpinState> {
final SpinRepository spinRepository = sl<SpinRepository>();
SpinPageState spinPageState;
bool stateVip;
bool spinState = false;
String winThing;
int winResult;
int gamePlayCountVip;
int gamePlayCountRegular;
checksRegular ChecksRegular;
checksVip ChecksVip;
SpinBloc({
@required checksRegular ChecksRegular,@required checksVip ChecksVip,})
: assert(checksRegular != null),assert(checksVip != null),ChecksRegular = ChecksRegular,ChecksVip = ChecksVip,super(SpinState.initial());
@override
Stream<SpinState> mapEventToState(SpinEvent event,) async* {
final SpinRepository spinRepository = sl<SpinRepository>();
SpinState.initial();
if (event is SpinLoadingEvent) {
Response updateResponse;
yield SpinLoadingState();
final checkRegularOrFailure = await ChecksRegular(
checksRegularParams());
final checkVipOrFailure = await ChecksVip(
checksVipParams());
checkRegularOrFailure.fold((failure) {
updateResponse = Response(
status: false,message: UNEXPECTED_FAILURE_MESSAGE,statusCode: "FAIL CHECK REGULAR",);
},(response) {
spinState = true;
spinPageState = SpinPageState.regular;
response.toList().where((e){
print("PEOPLE COUNT= ${ e.gamePlayed}");
});
});
checkVipOrFailure.fold((failure) {
updateResponse = Response(
status: false,statusCode: "FAIL CHECK VIP",(response) {
spinState = true;
spinPageState = SpinPageState.vip;
});
yield SpinLoadingState();
}
if (event is SpinStartEvent) {
}
}
}
RemoteCode;
class PromotionRemoteDataSourceImpl implements PromotionRemoteDataSource {
String token;
final http.Client client;
PromotionRemoteDataSourceImpl({this.client});
Map<String,String> get defaultHeaders =>
{
'Accept': 'application/json','Authorization': 'Bearer $token',"Content-Type": "application/json"
};
Map<String,String> get defaultQueryParams => {
"lang": Platform.localeName.split('_')[0],};
@override
Future<List<Check>> checksRegular() async {
Uri uri = Uri.https(
API_URL,'/promotions/check/regular',defaultQueryParams,);
print("URİ: "+ uri.toString());
final response = await client.get(uri,headers: defaultHeaders);
final body= json.decode(response.body);
解决方法
我认为问题出在这里
response.toList().where((e){
print("PEOPLE COUNT= ${ e.gamePlayed}");
});
原因如错误消息所述。响应变量为空,您试图将空转换为列表,而 Dart 不喜欢那样。实现一些方法来处理响应为空的场景,例如在那里有一个 if 语句,这有望解决您的问题
,我解决了这样的错误;
// Display Custom Admin Product Fields
add_action( 'woocommerce_product_options_general_product_data','add_admin_product_custom_general_fields' );
function add_admin_product_custom_general_fields() {
global $product_object;
echo '<div class="options_group custom_dates_fields">
<p class="form-field custom_date_from_field" style="display:block;">
<label for="_custom_date_from">' . esc_html__( 'Custom date range','woocommerce' ) . '</label>
' . wc_help_tip( __("This is a description for that date range fields (in a help tip)…","woocommerce") ) . '
<input type="text" class="short" name="_custom_date_from" id="_custom_date_from" value="' . esc_attr( $product_object->get_meta('_custom_date_from') ) . '" placeholder="' . esc_html( _x( 'From…','placeholder','woocommerce' ) ) . ' YYYY-MM-DD" maxlength="10" pattern="' . esc_attr( apply_filters( 'woocommerce_date_input_html_pattern','[0-9]{4}-(0[1-9]|1[012])-(0[1-9]|1[0-9]|2[0-9]|3[01])' ) ) . '" />
</p>
<p class="form-field custom_date_to_field" style="display:block;">
<input type="text" class="short" name="_custom_date_to" id="_custom_date_to" value="' . esc_attr( $product_object->get_meta('_custom_date_to') ) . '" placeholder="' . esc_html( _x( 'To…','woocommerce' ) ) . ' YYYY-MM-DD" maxlength="10" pattern="' . esc_attr( apply_filters( 'woocommerce_date_input_html_pattern','[0-9]{4}-(0[1-9]|1[012])-(0[1-9]|1[0-9]|2[0-9]|3[01])' ) ) . '" />
</div>';
?>
<script>
jQuery( function($){
$( '.custom_dates_fields' ).each( function() {
$( this ).find( 'input' ).datepicker({
defaultDate: '',dateFormat: 'yy-mm-dd',numberOfMonths: 1,showButtonPanel: true,onSelect: function() {
var datepicker = $( this );
option = $( datepicker ).next().is( '.hasDatepicker' ) ? 'minDate' : 'maxDate',otherDateField = 'minDate' === option ? $( datepicker ).next() : $( datepicker ).prev(),date = $( datepicker ).datepicker( 'getDate' );
$( otherDateField ).datepicker( 'option',option,date );
$( datepicker ).change();
}
});
$( this ).find( 'input' ).each( function() { date_picker_select( $( this ) ); } );
});
})
</script>
<?php
}
// Save Custom Admin Product Fields values
add_action( 'woocommerce_admin_process_product_object','save_admin_product_custom_general_fields_values' );
function save_admin_product_custom_general_fields_values( $product ){
if( isset($_POST['_custom_date_from']) && isset($_POST['_custom_date_to']) ) {
$product->update_meta_data( '_custom_date_from',esc_attr($_POST['_custom_date_from']) );
$product->update_meta_data( '_custom_date_to',esc_attr($_POST['_custom_date_to']) );
}
}