如何在Crashlytics / Flutter(Android)中查看Dart代码堆栈跟踪而不是Java代码堆栈跟踪

时间:2020-06-06 13:37:55

标签: firebase flutter dart crashlytics

我们正在为Flutter使用firebase_crashlytics插件来获取Crashlytics中的错误报告。不幸的是,对于Android,只有非致命问题显示正确的Dart代码堆栈跟踪。 致命问题仅显示Java代码堆栈跟踪,这使得它们很难调试。

是否也有办法获取有关致命问题的Dart代码堆栈跟踪?

1 个答案:

答案 0 :(得分:1)

我将此行添加到<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script> <form class="form" id="product-details-form"> <select class="form-control" id="supplier" name="productsupplier"> <option value=“0”>Supplier 1</option> <option value=“1”>Supplier 2</option> <option value=“2”>Supplier 3</option> <option value=“3”>Supplier 4</option> </select> </form> <button id="resetButton">Reset</button>中以获得Dart StackTrace:

export const getTrainerAvailability = (trainerId) => {
    console.log('getting here', trainerId)  
    return async (dispatch) => {
    dispatch(getTrainerAvailabilityRequest());
    const token = await AsyncStorage.getItem('token');
    fetch(url + 'gettraineravailability/' + trainerId, {
        method: 'GET',
        headers: {
            'Content-Type': 'application/json',
            'Authorization': `${token}`
        }
        })
        .then(res => res.json())
        .then(res => {
            console.log('RES', res)    // <-- logs as expected
            if (res.error) {
                console.log('error')
                throw(res.error);
            }
            dispatch(getTrainerAvailabilitySuccess(res));
        })
        .catch(error => {
            dispatch(getTrainerAvailabilityError(error));
        })
    }
};

export const getTrainerAvailabilitySuccess = (data) => {
    console.log('RAW DATA: ', data[0])  // <-- this is logged as expected
    const rawAvailability = data[0]

    let mondayAvailability = [];
    let tuesdayAvailability = [];
    let wednesdayAvailability = [];
    let thursdayAvailability = [];
    let fridayAvailability = [];
    let saturdayAvailability = [];
    let sundayAvailability = [];

    for (let item of rawAvailability) {
        if (item.week_day === 'Monday') {
            mondayAvailability.push(item);
        }
        else if (item.week_day === 'Tuesday') {
            tuesdayAvailability.push(item);
        }
        else if (item.week_day === 'Wednesday') {
            wednesdayAvailability.push(item);
        }
        else if (item.week_day === 'Thursday') {
            thursdayAvailability.push(item);
        }
        else if (item.week_day === 'Friday') {
            fridayAvailability.push(item);
        }
        else if (item.week_day === 'Saturday') {
            saturdayAvailability.push(item);
        }
        else if (item.week_day === 'Sunday') {
            sundayAvailability.push(item);
        }
    }
    console.log('im here', mondayAvailability) // this is not logged

    const interval = moment.duration(30, 'minutes');
    let startTime;
    let endTime
    let arrayLength;
    let slotTime;
    let refinedData;      

    // further array manipulation...

    console.log('REFINED DATA: ', refinedData) // <- this is not logged

    return {
        type: 'GET_TRAINER_AVAILABILITY_SUCCESS',
        payload: refinedData
    }
};
main.dart

有关更多详细信息,请参见:https://pub.dev/packages/firebase_crashlytics