こんにちは、Reso Coder チュートリアルに従って、http 処理にチョッパーを使用しています。まったく同じコードを使用しましたが、プロバイダーでエラーが発生しました。local_notifications などの他のサービスを使用していますが、https パッケージを pubspec.yaml から削除していないことに注意してください。
import 'package:flutter/material.dart';
import 'package:flutter_local_notifications/flutter_local_notifications.dart';
import 'package:provider/provider.dart';
import 'package:relationship/screens/weekly_view.dart';
import 'package:relationship/services/chopper_services.dart';
final FlutterLocalNotificationsPlugin fluterLN =
FlutterLocalNotificationsPlugin();
void main() async {
WidgetsFlutterBinding.ensureInitialized();
var initializeAndroid = AndroidInitializationSettings("fly");
var initialSettings = InitializationSettings(
android: initializeAndroid, iOS: null, macOS: null);
await fluterLN.initialize(initialSettings,
onSelectNotification: (payload) async {
if (payload != null) {
debugPrint("notification payload $payload");
}
print(payload);
});
runApp(MyApp());
}
class MyApp extends StatefulWidget {
@override
_MyApp createState() => _MyApp();
}
class _MyApp extends State<MyApp> {
Widget build(BuildContext context) {
return Provider(
builder: (_) => PersonalPostingService.create(),
dispose: (context, PersonalPostingService service) =>
service.client.dispose(),
child: MaterialApp(
home: WeeklyData(),
));
}
}
エラーは次のとおりです
The named parameter 'create' is required, but there's no corresponding argument.
Try adding the required argument.
The argument type 'Widget Function(BuildContext)' can't be assigned to the parameter type 'Widget Function(BuildContext, Widget?)?'.
The return type 'PersonalPostingService' isn't a 'Widget', as required by the closure's context.
これは私の個人的な Posting Service Class です。これまでプロバイダーを使用したことがなく、概念がわかりません。関数は Future および future ビルダーを多く使用しています ###
import 'package:chopper/chopper.dart';
part 'chopper_services.chopper.dart';
@ChopperApi(baseUrl: '/personal/')
abstract class PersonalPostingService extends ChopperService {
@Get()
Future<Response> getPosts();
@Get(path: '/{created}')
Future<Response> getFilteredPost(@Path('created') DateTime dateTime);
@Post()
Future<Response> postPersonal(
@Body() Map<String, dynamic> body,
);
static PersonalPostingService create() {
final client = ChopperClient(
baseUrl: 'http:/url',
services: [_$PersonalPostingService()],
converter: JsonConverter());
return _$PersonalPostingService(client);
}
}